JSTL 标签库

JSTL 标签库 全称是指 JSP Standard Tag Library JSP 标准标签库。是一个不断完善的开放源代码的 JSP 标签库。
EL 表达式主要是为了替换 jsp 中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个 jsp 页面变得更佳简洁。

JSTL 由五个不同功能的标签库组成。
18 JSTL标签库_java

在 jsp 标签库中使用 taglib 指令引入标签库

CORE 标签库<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>XML 标签

<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>FMT 标签库

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>SQL 标签库

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>FUNCTIONS 标签库

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %

JSTL 标签库的使用步骤

1、先导入 jstl 标签库的 jar 包。
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar

2、第二步,使用 taglib 指令引入标签库

core 核心库使用

i.set(使用很少)

作用:set 标签可以往域中保存数据

    <%--
    <c:set/>
        作用:set标签可以往域中保存数据
        域对象.setAtttribute(key,value);
        scope 属性设置保存到哪个域
            page表示pageContext域
            request表示Request域
            session表示Session域
            application表示ServletContext域
        var属性设置key是多少
        value属性设置value是多少
    --%>
    保存之前:${requestScope.abc}<br>
    <c:set scope="page" var="abc" value="abcValue"/>
    保存之后:${requestScope.abc}<br>

ii.if

if 标签用来做 if 判断。

  <%--
        <c:if />
        if标签用来做if判断

        test属性表示判断的条件(使用EL表达式输出)
        --%>
        <c:if test="${12 == 12}">
            <h1>12等于12</h1>
        </c:if>

iii. chose when otherwise 标签

作用:多路判断。跟 switch ... case .... default 非常接近

 <%--
    <c:choose> <c:when> <c:otherwise>标签
    作用:多路判断。跟switch...case...default非常接近

    choose标签表示开始选择判断
    when标签表示每一种判断情况

    注意点:
      1、标签里不能使用html注释,要使用jsp注释
      2、when标签的父标签一定要是choose标签
    --%>

    <%
        request.setAttribute("height",178);
    %>

    <c:choose>
       <c:when test="${requestScope.height > 190}">
           <h2>小巨人</h2>
       </c:when>
        <c:when test="${requestScope.height > 180}">
            <h2>很高</h2>
        </c:when>
        <c:when test="${requestScope.height > 170}">
            <h2>不错</h2>
        </c:when>
        <c:otherwise>
            <h2>剩下的</h2>
        </c:otherwise>
    </c:choose>

iv.foreach

作用:遍历输出使用。

  1. 遍历 1 到 10,输出
    示例代码:
    <%--
    遍历1-10,输出
    begin属性设置开始的索引
    end 属性设置结束的索引
    var 属性表示循环的变量(也是当前正占遍历到的数据 )
    --%>
    <c:forEach begin="1" end="10" var="i">
        ${i}
    </c:forEach>
  1. 遍历 Object 数组
    示例代码:
    <%--
    遍历Object数组
        items表示遍历的数据源(遍历的集合)
        var 属性表示循环的变量(也是当前正占遍历到的数据 )

    --%>

    <%
        request.setAttribute("arr", new String[]{"18610541354","18688886666","18699998888"});
    %>
    <c:forEach items="${requestScope.arr}" var="item">
        ${item}
    </c:forEach>
  1. 遍历 Map 集合
    <%--
    遍历Map集合
     items表示遍历的数据源(遍历的集合)
     var 属性表示循环的变量(也是当前正占遍历到的数据 )

    --%>
    <%
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        request.setAttribute("map", map);
    %>
    <c:forEach items="${requestScope.map}" var="entry">
        ${entry.key}
    </c:forEach>
  1. 遍历 List 集合---list 中存放 Student 类,有属性:编号,用户名,密码,年龄,电话信息

Student 类:

public class Student {
    //4.编号,用户名,密码,年龄,电话信息
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String phone;

示例代码:

    <%--
        遍历 List 集合---list 中存放 Student 类,有属性:编号,用户名,密码,年龄,电话信息
         items表示遍历的数据源(遍历的集合)
        var 属性表示循环的变量(也是当前正占遍历到的数据 )
        begin表示遍历的开始索引值
        end表示结束的索引值
        step 表示遍历的步长值 相等于 i+=2
        varStatus表示当前遍历到数据的状态
    --%>
    <%
        List<Student> studentList = new ArrayList<Student>();
        for (int i = 1; i <= 10; i++) {
            studentList.add(new Student(i,"username"+i ,"pass"+i,18+i,"phone"+i));
        }
        request.setAttribute("stus", studentList);
    %>
    <c:forEach begin="2" end="7" step="2" varStatus="status" items="${requestScope.stus}" var="stu">
        ${stu}
    </c:forEach>