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