JSTL

概述

JSP标准标签库(JSP Standard Tag Library)是Java EE网络应用程序开发平台的组成部分。它在JSP规范的基础上,扩充了一个JSP的标签库来完成一些通用任务。

JSTL 的作用

实现 JSP 页面中逻辑处理。如判断, 循环等;

使用 JSTL 的前提

必须在 JSP 页面添加 tablib 指令库

【注意】

1、需要导包

jstl-1.2.jar

2、添加 JSP 指令

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

JSTL 使用

通用标签 set、out、remove

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>测试JSTL中的标签</title>
</head>
<body>
    <%--使用JSTL给指定域对象设置属性参数--%>
    <c:set var="username" value="易烊千玺" scope="page"/>

    ${username}

    <%--通过JSTL获取属性参数--%>
    <c:out value="${username}"/>

    <%--通过JSTL移除指定域对象中的属性参数--%>
    <c:remove var="username" scope="page"/>

    <c:out value="${username}"/>

</body>
</html>

条件标签 if

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="com.fc.bean.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>测试jstl中的if</title>
</head>
<body>
<%-- 条件判断 --%>
<%--
 c:if 判断标签中 test属性是必须的,不可以缺省的
 test属性中的值是支持EL表达式
 --%>
<c:if test="${10 > 5}">
    <h3 align="center">条件成立</h3>
</c:if>

<%
    Student student = new Student(1, "易烊千玺", 20, "男", "真帅");

    // 设置属性到Request域对象中
    pageContext.setAttribute("student", student, PageContext.REQUEST_SCOPE);

    List<Student> list = new ArrayList<>();

    list.add(new Student(1, "易烊千玺", 20, "男", "真帅"));
    list.add(new Student(2, "迪丽热巴", 18, "女", "真美"));
    list.add(new Student(3, "欧阳娜娜", 17, "女", "可爱"));

    pageContext.setAttribute("list", list, PageContext.REQUEST_SCOPE);
%>
    <c:if test="${student.age > 10}">
        <h2 align="center">${student.name}还是曾经那个少年</h2>
    </c:if>
    <c:if test="${student.age < 10}">
        <h2 align="center">${student.name}还是曾经那个骚年</h2>
    </c:if>

    <hr>

    <c:if test="${list[0].age == 16}">
        <h2 align="center">${list[0].name}我好困啊~~~~~~</h2>
    </c:if>
    <c:if test="${list[1].age != 16}">
        <h2 align="center">${list[1].name}嗨起来啊</h2>
    </c:if>

</body>
</html>

条件标签 choose

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>测试jstl中的choose</title>
</head>
<body>
    <%
        int score = 59;
        request.setAttribute("score", score);
    %>
    <c:choose>
        <c:when test="${score >= 90}">
            <h3>优秀</h3>
        </c:when>
        <c:when test="${score >= 80}">
            <h3>良好</h3>
        </c:when>
        <c:when test="${score >= 70}">
            <h3>中等</h3>
        </c:when>
        <c:when test="${score >= 60}">
            <h3>及格</h3>
        </c:when>
        <c:otherwise>
            <h3>叫你爹穿着拖鞋过来</h3>
        </c:otherwise>
    </c:choose>
</body>
</html>

迭代标签 forEach【重点】

forEach 标签中的属性

属性描述
begin从哪开始
end到哪结束
var临时变量
step迭代部分的幅度
items遍历的内容
varStatus当前循环状态,是一个对象,内置了一些属性

varStatus 属性值

属性值描述
index临时变量
count迭代的次数
step迭代的频率
begin从哪开始
end到哪结束
first是否是第一次迭代
last是否是最后一次迭代
current当前迭代的内容

案例代码一

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>测试JSTL中的foreach循环</title>
</head>
<body>
    <%--相当于Java中的循环
        begin:从哪开始  i = 0
        end:到哪结束    i < 10
        var:临时变量    int i
        step:迭代部分   i++
        varStatus:当前循环状态,是一个对象,内置了一些属性
            index:临时变量
            count:迭代次数
            step:迭代的频率
            begin:从哪开始
            end:到哪结束
            first:是否是第一次迭代
            last:是否是最后一次迭代
            current:当前迭代的内容

    --%>
    <c:forEach begin="1" end="10" var="temp" step="1" varStatus="status">
        <c:out value="${temp}"/>
        <c:out value="${status.index}"/>
        <c:out value="${status.current}"/>
        <c:out value="${status.count}"/><br/>
    </c:forEach>
</body>
</html>

案例代码二

<%@ page import="com.fc.bean.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>测试jstl中的foreach</title>
</head>
<body>
    <%--
    c:foreach属性
        var: 临时变量,循环结构中可以临时使用
        begin:从何时开始,这里可以使用EL表达式
        end:到何时结束,这里也可也使用EL表达式
        step:间隔,默认为1
    --%>
    <c:forEach var="num" begin="0" end="10">
        ${num}&nbsp;
    </c:forEach>

    <hr>

    <%
        List<Student> list = new ArrayList<>();

        list.add(new Student(1, "易烊千玺", 20, "男", "真帅"));
        list.add(new Student(2, "迪丽热巴", 18, "女", "真美"));
        list.add(new Student(3, "欧阳娜娜", 17, "女", "可爱"));

        pageContext.setAttribute("list", list);
    %>

    <table align="center" border="1px">
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
            <th>Gender</th>
            <th>Info</th>
        </tr>

        <c:if test="${not empty list}">
            <%--items:表示需要遍历的元素--%>
            <c:forEach var="stu" items="${list}">
                <tr align="center">
                    <td>${stu.id}</td>
                    <td>${stu.name}</td>
                    <td>${stu.age}</td>
                    <td>${stu.gender}</td>
                    <td>${stu.info}</td>
                </tr>
            </c:forEach>
        </c:if>
    </table>
</body>
</html>
最后修改:2021 年 01 月 24 日 12 : 06 PM
如果觉得此文章有用,请随意打赏