JSTL標籤工具類

~逍遙子~發表於2021-08-21

一、介紹:

​ 1.Jsp Standrad Tag Lib: JSP中標準的標籤工具類

​ 2.由 sun公司 提供

​ 3.組成:(1)核心標籤:Java在jsp上基本功能進行封裝 if while

​ (2)SQL標籤:JDBC在JSP上使用功能

​ (3)xml標籤:DOM4J在JSP上使用功能

​ (4)Format標籤:JSP檔案格式轉換

二、配置:

1.匯入依賴 jar: jstl.jar standard.jar

        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/taglibs/standard -->
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

2.在JSP檔案引入JSTL中core包依賴約束

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

三、標籤使用:

1.<c:set>:

​ 作用:在JSP檔案上設定域物件中共享資料

​ 使用:<c:set scope="session" var="key" value="10"/>

​ 代替:<% session.setAttribute("key","10"); %>

​ 屬性:scope:指定操作物件別名

​ scope="application/session/request/page"

​ var:宣告域物件中關鍵字

​ value:存入的共享資料

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"  language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:set scope="application" var="sid" value="10"/>
<c:set scope="session" var="sname" value="mike"/>
<c:set scope="request" var="age" value="24"/>
<c:set scope="page" var="home" value="上海"/>

學員編號:${applicationScope.sid}<br>
學員姓名:${sessionScope.sname}<br>
學員年齡:${requestScope.age}<br>
學員籍貫:${pageScope.home}<br>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%--設定使用者今年的年齡--%>
<c:set scope="request" var="age" value="20"/>
<%--設定使用者兩年之後的年齡--%>
<c:set scope="request" var="age" value="${requestScope.age+2}"/>

使用者兩年之後的年齡:${requestScope.age}

2.<c:if>

​ 作用:在JSP檔案上控制哪些內容可以寫入到響應體中

​ 使用:
<c:if test="通過EL表示式進行判斷">

內容

</c:if>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:set scope="session" var="age" value="20"/>

  <c:if test="${sessionScope.age ge 18}">
      <font color="red">歡迎光臨</font>
  </c:if>

  <c:if test="${sessionScope.age lt 18}">
      <font color="red">過兩年再來</font>
  </c:if>

3.<c:choose>

​ 作用:在JSP檔案上實現多分支選擇判斷,決定哪一個內容寫入到響應體

​ 使用:
<c:choose>

​ <c:when test="EL表示式進行判斷">內容1</c:when>

​ <c:when test="EL表示式進行判斷">內容2</c:when>

​ <c:otherwisse>內容3</c:otherwisse>

​ </c:choose>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:set scope="page" var="sal" value="15000"/>

<c:choose>
    <c:when test="${sal ge 50000}">高工資</c:when>
    <c:when test="${sal ge 20000}">正常工資</c:when>
    <c:when test="${sal ge 10000}">低工資</c:when>
    <c:otherwise>不正常工資</c:otherwise>
</c:choose>

4.<c:forEach>

​ 作用:迴圈遍歷

   第一種使用方式:
	<c:forEach var="宣告迴圈變數名稱" begin="初始化迴圈變數" end="迴圈變數的最大值" step="遞增或遞減值">
        內容
    	</c:forEach>
***step屬性可以不寫,預設每次遞增加一
***迴圈變數被儲存在 pageContext 中
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
Java實現:
<select>
    <%
        for (int i = 1; i < 5; i++) {
    %>
    <option>第<%=i%>頁</option>
    <%
        }
    %>
</select>
<br>
JSTL實現:
<select>
    <c:forEach var="i" begin="1" end="5" step="1">
        <option>第${pageScope.i}頁</option>
    </c:forEach>
</select>
第二種寫法
<c:forEach items="通過EL表示式獲得域物件集合" var="宣告迴圈變數">
    ${迴圈變數.物件屬性名}
</c:forEach>

<%--例子--%>
        <table border="2">
            <tr>
                <td>學員編號</td>
                <td>學員姓名</td>
            </tr>
            <c:forEach items="${key}" var="stu">
                <tr>
                    <td>${stu.sid}</td>
                    <td>${stu.sname}</td>
                </tr>
            </c:forEach>
        </table>
<h1>遍歷map</h1>
        <table border="2">
            <tr>
                <td>班級名稱</td>
                <td>學員編號</td>
                <td>學員名稱</td>
            </tr>

<%--
    遍歷map時,每次從map集合得到一個【鍵值對】
    【鍵值對】交給迴圈變數
    迴圈變數.key 獲得【鍵值對】中關鍵字名字 班級名稱
    迴圈變數.value 獲得【鍵值對】中內容  stu物件
--%>
            <c:forEach items="${mapKey}" var="key_value">
                <tr>
                    <td>${key_value.key}</td>
                    <td>${key_value.value.sid}</td>
                    <td>${key_value.value.sname}</td>
                </tr>
            </c:forEach>
        </table>

相關文章