菜鳥學Java(三)——JSTL標籤之核心標籤

劉水鏡發表於2013-06-25

JSTL(JSP Standard Tag Library ,JSP標準標籤庫)是一個實現 Web應用程式中常見的通用功能的定製標記庫集,這些功能包括迭代和條件判斷、資料管理格式化、XML 操作以及資料庫訪問。


目前也有不少人在用JSTL,今天我們就一起學習一下JSTL的核心標籤。



在JSP頁面引入核心標籤庫的程式碼為:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


下面簡單介紹一下這些標籤的用法:


1,表示式控制標籤

<c:out>

用於在JSP中顯示資料。

語法1:沒有本體(body)內容
<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />


語法2:有本體內容
<c:out value="value" [escapeXml="{true|false}"]>
default value
</c:out>


<c:set>

用於儲存資料。


語法1
將value的值儲存至範圍為scope的varName變數之中:
<c:set value="value" var="varName" [scope="{ page|request|session|application }"]/>


語法2
將本體內容的資料儲存至範圍為scope的varName變數之中:
<c:set var="varName" [scope="{ page|request|session|application }"]>
… 本體內容
</c:set>

語法3
將value的值儲存至target物件的屬性中:
c:set value="value" target="target" property="propertyName" />

語法4
將本體內容的資料儲存至target物件的屬性中:
<c:set target="target" property="propertyName">
… 本體內容
</c:set>


<c:remove>

用於刪除資料。


語法:
<c:remove var="varName" [scope="{ page|request|session|application }"] />

<c:chtch>


2,流程控制標籤

<c:if>

用途跟其他語言中的if類似。


語法1
:沒有本體內容(body)
<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
varName值為testCondition執行結果(布林值)。


語法2
:有本體內容
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
本體內容</c:if>
如果表示式的結果為true,則執行本體內容,false則相反


<c:choose>、<c:when>、<c:otherwise>

這3個標籤通常情況下是一起使用的,<c:choose>標籤作為<c:when>和<c:otherwise>標籤的父標籤來使用。

語法1:
<c:choose>
         <c:when>
         表示式
         <c:otherwise>
         表示式
         <c:otherwise>
         表示式
</c:choose>

語法2:
<c:when text=”條件”>
表示式
</c:when>


語法3:
<c:otherwise>
表示式
</c:otherwise>


補充:

(1)語法1為3個標籤的巢狀使用方式,<c:choose>標籤只能和<c:when>標籤共同使用。
(2)語法2為<c:when>標籤的使用方式,該標籤都條件進行判斷,一般情況下和<c:choose>共同使用。
(3)<c:otherwise>不含有引數,只能跟<c:when>共同使用,並且在巢狀中只允許出現一次。


3,迴圈標籤

<c:forEach>

跟其他語言中的forEach類似。


語法:迭代一集合物件之所有成員
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"]
[begin="begin"] [end="end"] [step="step"]>
</c:forEach>


<c:forTokens>

用於瀏覽字串,並根據指定的字元將字串擷取。


語法:
<c:forTokens items=”strigOfTokens” delims=””delimiters [var=”name” begin=”begin” end=”end” step=”len” varStatus=”statusName”] >


4,URL操作標籤

<c:import>

該標籤可以把其他靜態或動態檔案包含到本JSP頁面。同<jsp:include>的區別為:只能包含同一個web應用中的檔案。而<c:import>可以包含其他web應用中的檔案,甚至是網路上的資源。


語法1:
<c:import url=”url” [context=”context”][ value=”value”][scope=”page|request|session|application”] [charEncoding=”encoding”]>


語法2:
<c:import url=”url” varReader=”name” [context=”context”][charEncoding=”encoding”]>
<c:redirect>


<c:url>

該標籤用於動態生成一個String型別的URL,可以同<c:redirect>標籤共同使用,也可以使用html的<a>標籤實現超連結。


語法1:指定一個url不做修改,可以選擇把該url儲存在JSP不同的範圍中。
<c:url value=”value” [var=”name”][scope=”page|request|session|application”][context=”context”]/>


語法2:給url加上指定引數及引數值,可以選擇以name儲存該url。
<c:url value=”value” [var=”name”][scope=”page|request|session|application”][context=”context”]>
<c:param name=”引數名” value=”值”>
</c:url>


上面說了那麼多,那麼為什麼要用JSTL呢?它有什麼優點呢?其優點如下:
1、 簡化了JSP和WEB應用程式的開發。
2、 便於維護。
3、 減少甚至避免了JSP中的scriptlet程式碼。
4、 易於前臺人員掌握,使前後臺分工明確,提高團隊開發效率。


有人說JSTL已經過時了,其實每種語言都有它的優點,沒有啥過時不過時的,就看適合不適合了。具體選擇什麼就看公司要求和專案的實際情況了。


相關文章