JSTL

4、  JSTL

 

1.  JSTL 簡介

* 什麼是 JSTL?
1. JSTL(JavaServer Pages Standard Tag Library,即:JSP 標準標籤庫),是由 SUN 公司發佈的一個針對 JSP 開發的新組件,並做爲 JSP 技術應用的一個標準
2. JSTL 標籤庫的做用是儘可能減小 JSP 文件的 Java 代碼,使 Java 代碼與 HTML 代碼分離,因此 JSTL 標識庫符合 MVC 設計理念
3. MVC 設計理念是實現動做控制、數據處理、結果顯示三者分離
4. JSTL 幾乎可以作到傳統 JSP 腳本代碼能作的任何事情
5. JSTL 標籤庫包含了如下五個標籤庫:
1)JSTL 核心標籤庫(重點講解):是最經常使用的 JSTL 標籤
2)I18N 格式標籤庫:用來格式化並輸出文本、日期、時間、數字
3)XML 標籤庫:提供了與關係型數據庫(Oracle,MySQL,SQL Server 等等)進行交互的標籤
4)SQL 標籤庫:提供了建立和操做 XML 文檔的標籤
5)函數標籤庫:包含一系列標準函數,大部分是字符串處理函數

* 在 JSP 中使用 JSTL 標籤須要具有以下兩個條件:
1. 下載安裝 JSTL 庫(兩種):
1)JSTL1.1 版本的下載地址爲:https://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
a.下載文件爲 jakarta-taglibs-standard-1.1.1.zip,解壓後將 lib 文件夾下的兩個文件:jstl.jarstandard.jar 拷貝到 Web 應用程序的 /WEB-INF/lib/ 下
2)JSTL1.2 版本的下載地址爲:https://mvnrepository.com/artifact/org.glassfish.web/jstl-impl/1.2
a.下載文件爲 jstl-impl-1.2.jar,將該文件拷貝到 Web 應用程序的 /WEB-INF/lib/ 下

2. 要在 JSP 頁面使用 taglib 指令引用 JSTL 標籤庫(根據本身的需求引用):
1)JSTL 核心標籤庫<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2)I18N 格式標籤庫:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
3)XML 標籤庫:<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
4)SQL 標籤庫:<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
5)函數標籤庫:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

2.  JSTL 核心標籤

* JSTL 核心標籤
* 1. <c:out value="數據" default="默認值" escapeXml="true"></c:out>
a.將數據輸出給客戶端,如同 <%= ... >
b.數據能夠是常量值,也能夠是 EL 表達式,使用的表達式結果爲 null,則輸出默認值
c.escapeXml:是否忽略 XML 特殊字符,默認爲 true

* 2. <c:set var="hello" value="hello pageContext" scope="page"></c:set>
a.存儲數據到做用域對象中
b.var:表示存儲的鍵名
c.value:表示存儲的數據
d.scope:表示要存儲在哪一個做用域中,值有 page/request/session/application,默認是 page

* 3. <c:set target="package.class" property="propertyName" value="value" scope=""></c:set>
a.用於設置對象屬性,此時就是 <jsp:setProperty> 行爲標籤的孿生兄弟了
b.一旦指定了 target 屬性,就必定要指定 property 屬性

* 4. <c:remove var="hello" scope="request"/>
a.刪除做用域中的指定鍵名的數據
b.var:表示要刪除數據的鍵名
c.scope:表示要刪除數據所在的做用域(可選)
d.注意:若是在不指定做用域的狀況使用該標籤刪除數據,會將四個做用對象中的符合要求的數據所有刪除

* 5. <c:if test="${表達式}"> 代碼 </c:if>
a.進行邏輯判斷,至關於 Java 中的單分支判斷
b.注意:邏輯判斷標籤須要依賴於 EL 的邏輯運算,也就是表達式中涉及的數據必須從做用域中獲取

* 6. <c:choose>
  <c:when test="${表達式}"> 執行體 </c:when>
  <c:when test="${表達式}"> 執行體 </c:when>
      ....
  <c:otherwise> 執行體 </c:otherwise>
</c:choose>
a.用於進行多條件的邏輯判斷,相似 Java 中的多分支語句
b.條件成立只會執行一次,都不成立則執行 otherwise

* 7. <c:forEach var="i" begin="1" end="6" step="1" varStatus="vs">
<c:out value="${i}"/>
</c:forEach>

a.常量循環
b.var:聲明變量,記錄每次循環的結果。存儲在做用域中,須要使用 EL 表達式獲取
c.begin:聲明循環開始位置
d.end:聲明循環結束位置
e.step:設置步長
f.varStatus:聲明標量,記錄每次循環的數據(循環下標、循環次數、是不是第一次循環、是不是最後一次循環)。注意:這些數據存儲在做用域中,須要使用 EL 表達式獲取,如:
${vs.index}${vs.count}${vs.first}${vs.last}

* 8. <c:forEach items="${list}" var="va">
<c:out value="${va}"/><p>
</c:forEach>

a.對象遍歷
b.items:聲明要遍歷的對象,結合 EL 表達式獲取對象
c.var:聲明變量,記錄每次循環的結果。存儲在做用域中,須要使用 EL 表達式獲取

* 9. <c:forTokens items="good,better,best" delims="," var="name">
   <c:out value="${name}"/><p>
</c:forTokens>
a.根據指定的分隔符來分隔內容並迭代輸出
b.delims:表分隔符
c.var:聲明變量,記錄每次迭代輸出的結果。存儲在做用域中,須要使用 EL 表達式獲取

* 9. <c:catch var="String exceptionName">
<% int x = 5/0; %>
</c:catch>

a.var:用來儲存錯誤信息的變量,須要結合 EL 表達式來獲取,如:${exceptioName}、${exceptioName.message}

* 10. <c:import url="" />
a.如同 <jsp:include> 行爲標籤,但能夠是絕對路徑

* 11. <c:redirect url="" /> a. 重定向至一個新的 URL
相關文章
相關標籤/搜索