JSTL表達式小結

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 -->


試驗結果:


注:foreach的結果是在項目中,因爲沒有列出來

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中的<%=%>異曲同工




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章