一、介紹:
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>