1. 程式人生 > >[06] JSTL標準標簽庫

[06] JSTL標準標簽庫

下載 value 部分 welcome 元素 width web應用 border 一個


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 表達式控制

  1. <c:out value="字符串" />
輸出value的值,往往可以直接使用EL替代該標記。
  1. <c:set var="loggedIn" scope="session" value="${true}" />
將value的值存儲到scope範圍中名var的屬性中去,scope默認範圍為page。
  1. <c:remove var="loggedIn" scope="session" />
將var的值,從scope範圍中去除。
  1. <c:catch var="e"><%= 100/0 %></c:catch>
捕獲異常,異常對象使用var封裝。

2.2 流程控制

  1. <c:if test="${user.login}">Welcome</c:if>
若test的值為true,則運行<c:if></c:if>之間的代碼。
  1. <c:choose>
  2. <c:when test="${13>4}">
  3. hello!
  4. </c:when>
  5. <c:when test="${4<5}">
  6. hi!
  7. </c:when>
  8. <c:otherwise>
  9. how are u?
  10. </c:otherwise>
  11. </c:choose>
實現if/else的流程邏輯,註意,多個when在choose中類似if else,而不是單獨的if

2.3 循環標簽

  1. <c:forEach item="${allCustomers}" var="cust">
  2. ${cust}
  3. </c:forEach>
叠代集合allCustomers,每次叠代出來的元素將存儲到pageContext中,名為cust。
  1. <c:forTokens items="a:b:c:d" delims=":" var="token">
  2. ${token}
  3. </c:forTokens>
items屬性指定需要叠代的字符串,delims表示分隔符,var表示使用分隔符分割items所產生的字符串。

2.4 url操作標簽

  1. <c:import url="http://www.demo.com/test.txt" />
用來包含一些文本信息,<jsp:include>只能包含同一個Web應用中的文件,而<c:import>則可以包含其他Web應用甚至網絡上的資源。
  1. <c:redirect>
  2. <c:redirect url="index.jsp" />
  3. <c:param name="login" value="true" />
  4. </c:redirect>
進行響應重定向。
  1. <a href=<c:url value="admin/admin.jsp" />>訪問admin.jsp頁面</a>
輸出url地址,默認使用url重寫。

[06] JSTL標準標簽庫