在本章中,我們將瞭解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
中 -
- XercesImpl.jar − 下載地址: http://www.apache.org/dist/xerces/j/
- xalan.jar − 下載地址: http://xml.apache.org/xalan-j/index.html
以下是關於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() | 從字串的兩端刪除空格。 |