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() 從字串的兩端刪除空格。