[06] JSTL標準標簽庫
阿新 • • 發佈:2018-01-31
下載 value 部分 welcome 元素 width web應用 border 一個
所以說JSTL的使用也和我們使用自定義標簽是相同的:
JSTL需要單獨下載jar包,畢竟是別人寫好了的,jstl1.1往往需要jstl.jar和standard.jar兩個jar包(若導入jar包無法仍無法使用,嘗試將tld文件復制到WEB-INF目錄下)。 這裏以JSTL的常用版本1.1來示例說明,如下可以看到,共有五個方面的tld文件:
JSTL往往和EL表達式結合使用,在JSTL標簽中,屬性往往通過EL進行賦值。
1、JSTL概述
之前在《[03-01] JSP自定義標簽》中已經說明了自定義標簽的概況,而JSTL也是一套標簽庫,不過是廠商已經定義好的標簽庫,我們不再需要自行進行定制,直接使用即可。所以說JSTL的使用也和我們使用自定義標簽是相同的:
- 它也由兩部分組成,tld文件和標簽處理器類
- 導入tld也要使用JSP的taglib指令
JSTL需要單獨下載jar包,畢竟是別人寫好了的,jstl1.1往往需要jstl.jar和standard.jar兩個jar包(若導入jar包無法仍無法使用,嘗試將tld文件復制到WEB-INF目錄下)。 這裏以JSTL的常用版本1.1來示例說明,如下可以看到,共有五個方面的tld文件:
- c.tld 核心標記庫,最常用的標記如循環、分支、表達式賦值等
- fmt.tld 格式化/國際化標記庫,用來解析數據,如日期等
- sql.tld 數據庫標記庫,包含訪問數據庫的標記等
- x.tld xml標記庫,用來訪問xml元素
- fn.tld 函數標記庫,包含一些常用函數可以直接調用,如截取字符串等
JSTL往往和EL表達式結合使用,在JSTL標簽中,屬性往往通過EL進行賦值。
2、c.tld部分標簽說明
- 表達式控制標簽:out、set、remove、catch
- 流程控制標簽:if、choose、when、otherwise
- 循環標簽:forEach、forTokens
- url操作標簽:import、url、redirect
2.1 表達式控制
輸出value的值,往往可以直接使用EL替代該標記。
<c:out value="字符串" />
將value的值存儲到scope範圍中名var的屬性中去,scope默認範圍為page。
<c:set var="loggedIn" scope="session" value="${true}" />
將var的值,從scope範圍中去除。
<c:remove var="loggedIn" scope="session" />
捕獲異常,異常對象使用var封裝。
<c:catch var="e"><%= 100/0 %></c:catch>
2.2 流程控制
若test的值為true,則運行<c:if></c:if>之間的代碼。
<c:if test="${user.login}">Welcome</c:if>
實現if/else的流程邏輯,註意,多個when在choose中類似if else,而不是單獨的if。
<c:choose>
<c:when test="${13>4}">
hello!
</c:when>
<c:when test="${4<5}">
hi!
</c:when>
<c:otherwise>
how are u?
</c:otherwise>
</c:choose>
2.3 循環標簽
叠代集合allCustomers,每次叠代出來的元素將存儲到pageContext中,名為cust。
<c:forEach item="${allCustomers}" var="cust">
${cust}
</c:forEach>
items屬性指定需要叠代的字符串,delims表示分隔符,var表示使用分隔符分割items所產生的字符串。
<c:forTokens items="a:b:c:d" delims=":" var="token">
${token}
</c:forTokens>
2.4 url操作標簽
用來包含一些文本信息,<jsp:include>只能包含同一個Web應用中的文件,而<c:import>則可以包含其他Web應用甚至網絡上的資源。
<c:import url="http://www.demo.com/test.txt" />
進行響應重定向。
<c:redirect>
<c:redirect url="index.jsp" />
<c:param name="login" value="true" />
</c:redirect>
輸出url地址,默認使用url重寫。
<a href=<c:url value="admin/admin.jsp" />>訪問admin.jsp頁面</a>
[06] JSTL標準標簽庫