JSTL(JSP Standard Tag Library,JSP標準標籤庫)核心標籤庫標籤共有13個,功能上分爲4類:
1.表達式控制標籤:out、set、remove、catch
2.流程控制標籤:if、choose、when、otherwise
3.循環標籤:forEach、forTokens
4.URL操作標籤:import、url、redirect
下面分別對這些標籤進行說明:
表達式控制標籤
1. <c:out> 用來顯示數據對象(字符串、表達式)的內容或結果value:要輸出的值
escapeXml:,其默認值爲true,意思是是否過濾爲xml文檔。如果爲escapeXml="false",則將其中的html、xml解析出來。如value="<font size=16>java</font>",會顯示爲大小爲16的”java“如果爲escapeXml="true",則顯示<font size=16>java</font>
default:默認值
舉例:
<pre name="code" class="html"><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>JSTL表達式測試</title>
</head>
<body>
<!-- 測試cout標籤Start -->
<c:out value="這是用來測試c:out標籤"></c:out>
<!-- 測試cout標籤End -->
</body>
2. <c:set> 用於將變量存取於 JSP 範圍中或 JavaBean 屬性中。
<!-- 測試cset標籤Start -->
<c:set var="number" scope="session" value="${2000+300}"/>
<c:out value="cset的結果值:${number}"/>
<!-- 測試cset標籤End -->
3.<c:remove> 主要用來從指定的 jsp 範圍內移除指定的變量。
<!-- 測試c:remove標籤Start -->
<c:set var="number" scope="session" value="${2000+300}"/>
remove輸出:<c:out value="cset的結果值:${number}"/>
<br/>
<c:remove var="number"/>
remove之後:<c:out value="cset的結果值:${number}"/></p>
<!-- 測試c:remove標籤End -->
4.<c:catch> 用來處理 JSP 頁面中產生的異常,並存儲異常信息
<!-- 測試c:remove標籤start -->
<c:catch var ="catchException">
<% int x = 2/0;%>
</c:catch>
<c:if test = "${catchException != null}">
<p>捕獲到異常 : ${catchException} <br />
異常消息: ${catchException.message}</p>
</c:if>
<!-- 測試c:catch標籤End -->
流程控制標籤
1.<c:if>用來進行條件判斷
<!-- 測試c:if標籤Start -->
<c:set var="number" scope="session" value="${2000+2}"/>
<c:if test="${number > 2000}">
<p>number值爲${number},大於2000<p>
</c:if>
<!-- 測試c:if標籤End -->
2. <c:choose> <c:when> <c:otherwise>
三個標籤通常嵌套使用,第一個標籤在最外層,最後一個標籤在嵌套中只能使用一次
<!-- 測試c:when 標籤Start -->
<c:choose>
<c:when test="${number <= 0}">
number小於0.
</c:when>
<c:when test="${salary > 1000}">
number大於1000.
</c:when>
<c:otherwise>
其他情況,未知
</c:otherwise>
</c:choose>
<!-- 測試c:when標籤End -->
循環標籤
1.<c:forEach>
該標籤根據循環條件遍歷集合 Collection 中的元素。 var 用於存儲從集合中取出的元素;items 指定要遍歷的集合;varStatus 用於存放集合中元素的信息。
<!-- 測試c:forEach 標籤Start -->
<c:forEach items="${aList}" var="a" varStatus="status">
<tr>
<td><div id="${status.index+1}" name="assessSelectedDiv">
<c:out value="${status.index+1}" />、${a.assessContent}<br>
<c:forEach items="${a.weights}" var="b">
<input type="radio" name="${a.id}" value="${b.id}"class="answer">${b.weightContent} <br />
</c:forEach>
</div></td>
</tr>
</c:forEach>
<!-- 測試c:forEach標籤End -->
2.<c:forTokens>
用於瀏覽字符串,並根據指定的字符串截取字符串
<!-- 測試c:forTokens標籤Start -->
<c:forTokens items="json1#json2#json3" delims="#" var="name">
<c:out value="${name}"/><p>
</c:forTokens>
<!-- 測試c:forTokens標籤End -->
URL 操作標籤
(1)<c:import> 把其他靜態或動態文件包含到 JSP 頁面。與<jsp:include>的區別是後者只能包含同一個web應用中的文件,前者可以包含其他web應用中的文件,甚至是網絡上的資源。
語法:<c:import url="url" [context="context"] [value="value"] [scope="..."] [charEncoding="encoding"]></c:import>
(2)<c:redirect> 該標籤用來實現請求的重定向。例如,對用戶輸入的用戶名和密碼進行驗證,不成功則重定向到登錄頁面。或者實現Web應用不同模塊之間的銜接
語法:<c:redirect url="url" [context="context"]/>
(3)<c:url>
用於動態生成一個 String 類型的URL,可以同上個標籤共同使用,也可以使用HTML的<a>標籤實驗超鏈接。
語法:<c:url value="value" [var="name"] [scope="..."] [context="context"]/>
小結:
JSTL表達式,給JSP中的三種腳本語言類似,原理一樣,和.net中的<%=%>異曲同工