欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSTL标签库全面教程,JSTL标签库必知必会

程序员文章站 2022-03-29 19:40:42
...

JSTL标签库

MySQL的学习看这篇就够了,传送地址:SQL语句必知必会
JSP全面教程,传送地址:JSP必知必会

一、JSTL标签库简介

  1. JSTL标签库全称是JSP Standard Tag Library,是一个不断完善的开放源代码的JSP标签库
  2. EL表达式主要是为了替换JSP中的表达式脚本,JSTL标签库是为了替换代码脚本
  3. JSTL由五个不同功能的标签库组成:
    JSTL标签库全面教程,JSTL标签库必知必会

二、JSTL标签库的使用步骤

  1. 先导入JSTL标签库的jar包
    JSTL标签库全面教程,JSTL标签库必知必会
  2. 在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” %>

三、core核心库的使用

  1. <c:set/>标签,作用:可以往域中保存数据
    ① scope属性设置保存到哪个域,值如下:
    page表示pageContext域(默认值)
    request表示Request域
    session表示Session域
    application表示ServletContext域
    ② var属性设置key是多少
    ③ value属性设置value是多少

代码演示:在web目录下创建core.jsp

<body>
    保存之前:${ pageScope.name } <br>
    <c:set scope="page" var="name" value="Jaychou"/>
    保存之后:${ pageScope.name }<br>
</body>

运行结果:
JSTL标签库全面教程,JSTL标签库必知必会
2. <c:if/>标签,作用:做if判断
test属性设置判断的条件,属性值使用EL表达式
注意:如果test属性值为真则执行if开始标签和结束标签中的语句,为假则不执行

代码演示:在web目录下创建core.jsp

<body>
    <c:if test="${ 1 == 1 }">
        test属性值为真,我执行
    </c:if>
    <c:if test="${ 1 != 1 }">
        test属性值为假,我不执行
    </c:if>
</body>

运行结果:
JSTL标签库全面教程,JSTL标签库必知必会

  1. <c:choose>、<c:when>、<c:otherwise>标签,作用:多路判断,类似switch-case结构
    ① choose标签表示开始多路判断
    ② when标签表示每一种判断情况
    test属性设置判断的条件,属性值使用EL表达式
    注意:若test属性值为真,则执行when起始和结束标签中的语句
    ③ otherwise标签表示其余情况,若满足,则执行起始和结束标签中的语句
    注意:
    1.使用三种标签时标签里不能使用html注释,要使用jsp注释
    2. when标签的父标签一定是choose标签
    3. when标签是从上向下依次判断的,一旦有满足的就不会再判断剩余when标签

代码演示:在web目录下创建core.jsp

<body>
    <%
        request.setAttribute("grade", 55);
    %>
    <c:choose>
        <c:when test="${ requestScope.grade > 90 }">
            <div>绩点4.0</div>
        </c:when>
        <c:when test="{ requestScope.grade > 80 }">
            <h2>绩点3.0</h2>
        </c:when>
        <c:otherwise>
            <c:choose>
                <c:when test="{ requestScope.grade > 70 }">
                    <h2>绩点2.0</h2>
                </c:when>
                <c:otherwise>
                    绩点1.0或无
                </c:otherwise>
            </c:choose>
        </c:otherwise>
    </c:choose>
</body>

运行结果:
JSTL标签库全面教程,JSTL标签库必知必会

  1. <c:forEach/>标签,作用:遍历输出(与foreach循环一样,自动的遍历到下一个数据)

① 遍历1到10

代码演示:在web目录下创建foreach.jsp

<body>
    <%--
        begin属性设置开始的索引
        end属性设置结束的索引
        var属性表示循环的变量(当前正在遍历到的数据),可任意取名
        循环的是foreach起始和结束标签中的内容
    --%>
    <c:forEach begin="1" end="10" var="i">
        第${i}行 
    </c:forEach>
</body>

运行结果:
JSTL标签库全面教程,JSTL标签库必知必会
② 遍历数组

代码演示:在web目录下创建foreach.jsp

<body>
    <%--
        items表示遍历的数据源
        var表示当前遍历到的数据,可任意取名
    --%>
    <%
        request.setAttribute("arr", new String[]{"周杰伦","昆凌","方文山"});
    %>
    <c:forEach items="${ requestScope.arr }" var="item">
        ${ item } <br>
    </c:forEach>
</body>

运行结果:
JSTL标签库全面教程,JSTL标签库必知必会
③ 遍历Map集合

代码演示:在web目录下创建foreach.jsp

<body>
    <%
        Map<String, Object> map = new HashMap<>();
        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} 等于 ${entry.value} <br>
        <%--  ${entry}会将所有数据以 key=value 格式输出  --%>
    </c:forEach>
</body>

运行结果:
JSTL标签库全面教程,JSTL标签库必知必会

④ 遍历List集合,集合中存放Student类

代码演示1:创建Student类

public class Student {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String phone;
    //以及全参、空参构造器,get、set方法、toString方法
}

代码演示2:在web目录下创建foreach.jsp

<body>
    <%
        List<Student> studentList = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            studentList.add(new Student(i,"username"+i ,"pass"+i,18+i,"phone"+i));
        }
        request.setAttribute("stus", studentList);
    %>
    <%--
        items 表示遍历的数据源
        var 表示遍历到的数据
        begin表示遍历的开始索引值(起始为0),不写begin代表从第一个开始
        end 表示结束的索引值,不写end代表遍历到最后一个
        step 属性表示遍历的步长值,默认是1
        varStatus 属性表示当前遍历到的数据的状态
    --%>
    <c:forEach items="${requestScope.stus}" var="stu" begin="2"
                        end="7" step="2" varStatus="status">
            ${stu.id} <br>
            ${stu.username} <br>
            ${stu.password} <br>
            ${stu.age} <br>
            ${stu.phone} <br>
            ${status.step} <br> <%--还可获取更多状态,见下图--%>
    </c:forEach>
    <%--运行结果:从3输出到8,每隔两个输出,即只有3、5、7--%>
</body>

varStatus属性可以获得的状态:
JSTL标签库全面教程,JSTL标签库必知必会