JSP - 標準標籤庫 (JSTL) 教程



本章我們將學習JSP中的不同標籤。JavaServer Pages Standard Tag Library (JSTL) 是一個包含許多JSP應用程式常用核心功能的有用JSP標籤集合。

JSTL 支援常見的結構化任務,例如迭代和條件判斷,用於操作XML文件的標籤、國際化標籤和SQL標籤。它還提供了一個框架,用於將現有的自定義標籤與JSTL標籤整合。

安裝 JSTL 庫

要開始使用JSP標籤,您需要先安裝JSTL庫。如果您使用的是Apache Tomcat容器,請按照以下兩個步驟操作:

步驟 1 - 從 Apache Standard Taglib 下載二進位制發行版並解壓壓縮檔案。

步驟 2 - 要從其Jakarta Taglibs 發行版使用 Standard Taglib,只需將發行版 'lib' 目錄中的JAR檔案複製到應用程式的webapps\ROOT\WEB-INF\lib目錄。

要使用任何庫,您必須在每個使用該庫的JSP頂部包含一個<taglib>指令。

JSTL 標籤分類

根據其功能,JSTL標籤可以分為以下可在建立JSP頁面時使用的JSTL標籤庫組:

  • 核心標籤

  • 格式化標籤

  • SQL 標籤

  • XML 標籤

  • JSTL 函式

核心標籤

核心標籤組是最常用的JSTL標籤。以下是將JSTL核心庫包含在您的JSP中的語法:

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>

下表列出了核心JSTL標籤:

序號 標籤 & 描述
1 <c:out>

類似於<%= ... >,但用於表示式。

2 <c:set >

'scope'中設定表示式計算的結果。

3 <c:remove >

刪除作用域變數(如果指定,則從特定作用域刪除)。

4 <c:catch>

捕獲其主體中發生的任何Throwable,並可選地公開它。

5 <c:if>

簡單的條件標籤,如果提供的條件為真,則計算其主體。

6 <c:choose>

簡單的條件標籤,它為相互排斥的條件操作建立上下文,由<when><otherwise>標記。

7 <c:when>

<choose>的子標籤,如果其條件計算結果為'true',則包含其主體。

8 <c:otherwise >

<choose>的子標籤,位於<when>標籤之後,只有在所有先前條件計算結果都為'false'時才執行。

9 <c:import>

檢索絕對或相對URL,並將它的內容公開到頁面、'var'中的字串或'varReader'中的Reader。

10 <c:forEach >

基本的迭代標籤,接受許多不同的集合型別並支援子集化和其他功能。

11 <c:forTokens>

迭代由提供的分隔符分隔的標記。

12 <c:param>

向包含'import'標籤的URL新增引數。

13 <c:redirect >

重定向到新的URL。

14 <c:url>

建立具有可選查詢引數的URL。

格式化標籤

JSTL格式化標籤用於格式化和顯示文字、日期、時間和國際化網站的數字。以下是將格式化庫包含在您的JSP中的語法:

<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>

下表列出了格式化JSTL標籤:

序號 標籤 & 描述
1 <fmt:formatNumber>

以特定精度或格式呈現數值。

2 <fmt:parseNumber>

解析數字、貨幣或百分比的字串表示形式。

3 <fmt:formatDate>

使用提供的樣式和模式格式化日期和/或時間。

4 <fmt:parseDate>

解析日期和/或時間的字串表示形式。

5 <fmt:bundle>

載入要由其標籤主體使用的資源包。

6 <fmt:setLocale>

將給定的區域設定儲存在區域設定配置變數中。

7 <fmt:setBundle>

載入資源包並將其儲存在命名的作用域變數或包配置變數中。

8 <fmt:timeZone>

指定其主體中任何時間格式化或解析操作的時區。

9 <fmt:setTimeZone>

將給定的時區儲存在時區配置變數中。

10 <fmt:message>

顯示國際化訊息。

11 <fmt:requestEncoding>

設定請求字元編碼。

SQL 標籤

JSTL SQL標籤庫提供與關係資料庫(RDBMS)例如Oracle、mySQLMicrosoft SQL Server互動的標籤。

以下是將JSTL SQL庫包含在您的JSP中的語法:

<%@ taglib prefix = "sql" uri = "http://java.sun.com/jsp/jstl/sql" %>

下表列出了SQL JSTL標籤:

序號 標籤 & 描述
1 <sql:setDataSource>

建立一個僅適用於原型設計的簡單DataSource。

2 <sql:query>

執行在其主體或透過sql屬性定義的SQL查詢。

3 <sql:update>

執行在其主體或透過sql屬性定義的SQL更新。

4 <sql:param>

將SQL語句中的引數設定為指定的值。

5 <sql:dateParam>

將SQL語句中的引數設定為指定的java.util.Date值。

6 <sql:transaction >

為巢狀的資料庫操作元素提供共享的Connection,設定為將所有語句作為一個事務執行。

XML 標籤

JSTL XML標籤提供了一種以JSP為中心的建立和操作XML文件的方法。以下是將JSTL XML庫包含在您的JSP中的語法。

JSTL XML標籤庫具有用於與XML資料互動的自定義標籤。這包括解析XML、轉換XML資料以及基於XPath表示式的流程控制。

<%@ taglib prefix = "x" 
   uri = "http://java.sun.com/jsp/jstl/xml" %>

在繼續示例之前,您需要將以下兩個與XML和XPath相關的庫複製到您的<Tomcat安裝目錄>\lib

以下是XML JSTL標籤列表:

序號 標籤 & 描述
1 <x:out>

類似於<%= ... >,但用於XPath表示式。

2 <x:parse>

用於解析透過屬性或標籤主體指定的XML資料。

3 <x:set >

將變數設定為XPath表示式的值。

4 <x:if >

計算測試XPath表示式,如果為真,則處理其主體。如果測試條件為假,則忽略主體。

5 <x:forEach>

迴圈遍歷XML文件中的節點。

6 <x:choose>

簡單的條件標籤,它為相互排斥的條件操作建立上下文,由<when><otherwise>標籤標記。

7 <x:when >

<choose>的子標籤,如果其表示式計算結果為'true',則包含其主體。

8 <x:otherwise >

<choose>的子標籤,位於<when>標籤之後,只有在所有先前條件計算結果都為'false'時才執行。

9 <x:transform >

對XML文件應用XSL轉換。

10 <x:param >

transform標籤一起使用,以在XSLT樣式表中設定引數。

JSTL 函式

JSTL包含許多標準函式,其中大多數是常見的字串操作函式。以下是將JSTL函式庫包含在您的JSP中的語法:

<%@ taglib prefix = "fn" 
   uri = "http://java.sun.com/jsp/jstl/functions" %>

下表列出了各種JSTL函式:

序號 函式 & 描述
1 fn:contains()

測試輸入字串是否包含指定的子字串。

2 fn:containsIgnoreCase()

以不區分大小寫的方式測試輸入字串是否包含指定的子字串。

3 fn:endsWith()

測試輸入字串是否以指定的字尾結尾。

4 fn:escapeXml()

轉義可以解釋為XML標記的字元。

5 fn:indexOf()

返回字串中指定子字串第一次出現的索引。

6 fn:join()

將陣列的所有元素連線到一個字串中。

7 fn:length()

返回集合中的專案數,或字串中的字元數。

8 fn:replace()

返回一個字串,該字串的結果是替換輸入字串中所有出現的給定字串。

9 fn:split()

將字串拆分為子字串陣列。

10 fn:startsWith()

測試輸入字串是否以指定的字首開頭。

11 fn:substring()

返回字串的子集。

12 fn:substringAfter()

返回特定子字串之後字串的子集。

13 fn:substringBefore()

返回特定子字串之前字串的子集。

14 fn:toLowerCase()

將字串的所有字元轉換為小寫。

15 fn:toUpperCase()

將字串的所有字元轉換為大寫。

16 fn:trim()

刪除字串兩端的白空格。

廣告