Jstl教學

在本章中,我們將瞭解JSP中的不同標籤。JSP標準標籤庫(JSTL)是一個有用的JSP標籤的集合,它封裝了許多JSP應用程序通用的核心功能。

JSTL支持常見的結構性任務,如迭代和條件,用於處理XML文檔的標籤,國際化標籤和SQL標籤。 它還提供了一個框架,用於將現有的自定義標籤與JSTL標籤集成。

安裝JSTL庫

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

步驟1 - 從Apache Standard Taglib下載二進制文件並解壓縮壓縮文件。
步驟2 - 要從Jakarta Taglibs發行版中使用標準Taglib,只需將發行版「lib」目錄中的JAR文件複製到應用程序的`webapps\ROOT\WEB-INF\lib目錄中即可。

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

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

JSTL標籤的分類

根據JSTL標籤的功能,JSTL標籤可以分爲以下JSTL標籤庫組,可以在創建JSP頁面中使用 -

  • 核心標籤
  • 格式化標籤
  • SQL標籤
  • XML標籤
  • JSTL函數

1. 核心標籤

核心組標籤是最常用的JSTL標籤。 以下是在JSP中包含JSTL Core庫的聲明(導入)語法 -

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

下表列出了核心JSTL標籤使用示例 -

編號

標籤

描述

1

<c:out

類似<%= ...>,但僅對於表達式使用。

2

<c:set

在「範圍」中設置表達式求值的結果

3

<c:remove

刪除範圍變量(從指定的特定範圍中)。

4

<c:catch

捕捉髮生在其主體中的任何可拋出對象,並可選地暴露它。

5

<c:if

簡單的條件標籤,如果提供的條件爲真,則對其主體進行評估。

6

<c:choose

簡單的條件標籤,用於建立互斥條件操作的上下文,標記爲<when><otherwise>

7

<c:when

如果條件評估爲true,則包含<choose>的子標籤。

8

<c:otherwise

<when>標籤之後的<choose>子標籤,只有當所有先前條件都被評估爲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

2. 格式化標籤

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

在locale配置變量中存儲給定的區域設置。

7

<fmt:setBundle

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

8

<fmt:timeZone

指定嵌套在其正文中的任何時間格式化或解析操作的時區。

9

<fmt:setTimeZone

在時區配置變量中存儲給定的時區

10

<fmt:message

顯示國際化消息。

11

<fmt:requestEncoding

設置請求字符編碼

3. SQL標籤

JSTL SQL標籤庫提供與關係數據庫(RDBMS)進行交互的標記,如:Oracle,MySQL或Microsoft SQL Server。

以下是在JSP中包含JSTL SQL庫的語法 -

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

下表列出了JSTL的SQL標籤 -

編號

標籤

描述

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

提供了一個共享的連接,設置爲執行所有語句作爲一個事務嵌套數據庫動作要素。

4. XML標籤

JSTL XML標籤提供了一種以JSP爲中心的創建和操作XML文檔的方法。 以下是在JSP中包含JSTL XML庫的語法。

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表達式,如果結果爲true,它處理其主體。如果測試條件爲false,則主體被忽略。

5

<x:forEach

循環XML文檔中的節點。

6

<x:choose

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

7

<x:when

如果<select>的表達式計算爲true,則包含其主體的子標籤。

8

<x:otherwise

只有當所有先前的條件評估爲true時,<choose>標籤才能跟隨<when>標籤。

9

<x:transform

在XML文檔上應用XSL轉換

10

<x:param

與變形標籤一起使用,以在XSLT樣式表中設置參數

5. JSTL函數

JSTL包括許多標準函數,其中大部分是常見的字符串操作功能。 以下是在JSP中包含JSTL函數庫的語法 -

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

下表列出了各種JSTL函數 -

編號

標籤

描述

1

fn:contains()

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

2

fn:containsIgnoreCase()

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

3

fn:escapeXml()

轉義可解釋爲XML標記的字符。

4

fn:indexOf()

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

5

fn:endsWith()

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

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()

從字符串的兩端刪除空格。