JSTL:JSP Standard Tag Library:JSP標准標簽庫
以下內容引用自http://wiki.jikexueyuan.com/project/jsp/standard-tag-library.html:
JSP標准標簽庫(JSTL)是一組有效的JSP標簽,它封裝了很多JSP應用程序的核心功能。
JSTL支持普通、結構任務,如迭代和條件,操作XML文件標簽,國際化標簽,和SQL標簽。它也提供了一個整合現有JSTL標簽和自定義標簽的框架。
JSTL標簽根據它們的功能進行分類,划分到JSTL標簽庫中,當創建一個JSP頁面時,可以使用這些標簽:
-
核心標簽庫
-
格式標簽庫
-
SQL標簽庫
-
XML標簽庫
- JSTL函數標簽庫
一、安裝JSTL標簽庫
如果使用的是Apache Tomcat容器,然后遵循以下兩個簡單的步驟:
-
從Apache Standard Taglib,下載JAR包。
- 復制JAR文件到應用程序的webapps\ROOT\WEB-INF\lib目錄中。如果是Eclipse項目的,復制到lib文件夾中。
為了使用所有的庫,必須在要使用該庫的每個JSP頁面的頭部中引入指令。
針對POM項目,可以有如下依賴:
<!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl --> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-impl</artifactId> <version>1.2.5</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-jstlel --> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-jstlel</artifactId> <version>1.2.5</version> </dependency>
說明:第一個依賴是javax對jstl的接口以及apache對這些接口的實現。第二個是apache對el語言的實現,並且包含了javax接口的依賴。
POM的第二種選擇:
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
說明:一個包包含了javax的接口以及jstl的實現和el語言的實現。不過版本只停留在1.2版本。
二、核心標簽庫
核心標簽庫是被廣泛使用的JSTL標簽庫。下面是在JSP頁面中引入核心標簽庫時需要使用的指令:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
接下來的是核心標簽庫的標簽:
標簽 | 描述 |
---|---|
<c:out > | 類似於java表達式,但是表達式。 |
<c:set > | 在某個范圍內設置表達式的值。 |
<c:remove > | 刪除一個域變量(從一個特殊的被指定的范圍)。 |
<c:catch> | 拋出任何發生在它的主體中的異常,並且有選擇的公開它。 |
<c:if> | 簡單的條件標簽,如果提供的條件是true,則執行標簽體的內容。 |
<c:choose> | 簡單的條件標簽,用標簽和建立一個互斥條件操作的上下文。 |
<c:when> | 的子標簽,如果它的條件為“true”,則運行標簽體的內容。 |
<c:otherwise > | 的子標簽,它出現在標簽之后,只有當先前的條件結果為“false”運行它。 |
<c:import> | 檢索絕對或相對的URL並且顯示它的內容到其他的頁面,在“var”中的一個String類型,或者在“varReader”中的一個Reader類型。 |
<c:forEach > | 基本的迭代標簽,接受多種不同的集合類型,支持子集和其他的功能。 |
<c:forTokens> | 迭代使用分隔符,分隔提供的定界符。 |
<c:param> | 添加一個參數到包含“import”標簽的URL。 |
<c:redirect > | 重新定向到的一個新的URL。 |
<c:url> | 創建一個帶有選項查詢參數的URL。 |
標簽詳解:http://www.cnblogs.com/EasonJim/p/6958979.html
三、格式標簽庫
JSTL的格式標簽庫是用於格式化和顯示國際化網址的文本、日期、時間和數字。下面是在JSP頁面中引入格式標簽庫時需要使用的指令:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
接下來的是格式標簽庫的標簽:
標簽 | 描述 |
---|---|
<fmt:formatNumber> | 用特定的精度或格式呈現數值。 |
<fmt:parseNumber> | 將一個表示數值、貨幣或百分比格式化字符串解析成數值對象。 |
<fmt:formatDate> | 將日期和/或時間對象格式化成指定的風格和模式 |
<fmt:parseDate> | 將用字符串表示的日期和/或時間解析成日期對象。 |
<fmt:bundle> | 使用它的標簽體來加載一個資源包。 |
<fmt:setLocale> | 在區域配置變量中存儲指定的區域。 |
<fmt:setBundle> | 加載一個資源包並且將其存儲在指定作用域或者資源包配置變量中。 |
<fmt:timeZone> | 在標簽體的內容中,對指定的時區進行時間格式化和解析操作。 |
<fmt:setTimeZone> | 將指定的時區存儲在時區配置變量中。 |
<fmt:message> | 顯示國際化的信息。 |
<fmt:requestEncoding> | 設置請求中字符的編碼格式。 |
標簽詳解:http://www.cnblogs.com/EasonJim/p/6958983.html
四、SQL標簽庫
JSTL的SQL標簽庫提供了標簽給交互的關系數據庫(RDBMSs)如Oracle、mySQL或Microsoft SQL Server。
下面是在JSP頁面中引入格式標簽庫時需要使用的指令:
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
接下來的是格式標簽庫的標簽:
標簽 | 描述 |
---|---|
<sql:setDataSource> | 創建一個簡單的只適合原型的數據源。 |
<sql:query> | 在它的標簽體中或通過SQL屬性,執行定義的SQL查詢操作。 |
<sql:update> | 在它的標簽體中或通過SQL屬性,執行定義的SQL更新操作。 |
<sql:param> | 將SQL語句中的一個參數設置為指定的值。 |
<sql:dateParam> | 將SQL語句中的一個參數設置為指定的java.util.Date值。 |
<sql:transaction> | 為嵌套數據庫操作元素提供了一個共享連接,建立執行所有語句組成一個事務。 |
標簽詳解:http://www.cnblogs.com/EasonJim/p/6958986.html
五、XML標簽庫
JSTL的XML標簽庫提供了創建和操縱XML文檔的JSP-centric方式。下面是在JSP頁面中引入XML標簽庫時需要使用的指令:
對於交互的XML數據,JSTL的XML標簽庫有自定義標簽。它包括解析XML、轉換XML數據和基於XPath語言表達式的流程控制。
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
在處理這個例子之前,應該需要復制以下兩個XML和XPath相關的庫到\lib中:
-
XercesImpl.jar: 從http://www.apache.org/dist/xerces/j/下載
- xalan.jar: 從http://xml.apache.org/xalan-j/index.html下載
針對POM項目,可以有如下依賴:
<!-- https://mvnrepository.com/artifact/xerces/xercesImpl --> <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.11.0</version> </dependency> <!-- https://mvnrepository.com/artifact/xalan/xalan --> <dependency> <groupId>xalan</groupId> <artifactId>xalan</artifactId> <version>2.7.2</version> </dependency>
接下來的是格式標簽庫的標簽:
標簽 | 描述 |
---|---|
<x:out> | 類似於java表達式 ,但是XPath表達式。 |
<x:parse> | 要么通過屬性要么在標簽體中,用於解析特定的XML數據。 |
<x:set> | 設置XPath表達式的變量值。 |
<x:if> | 計算測試的XPath表達式,如果它是true,就執行它的標簽體中的內容。如果測試條件是false,忽略這個標簽體中內容。 |
<x:forEach> | 在XML文件中循環頂點。 |
<x:choose> | 簡單的條件標簽,用標簽和建立一個互斥條件操作的上下文。 |
<x:when> | 的子標簽,如果它的條件為“true”,則運行標簽體的內容。 |
<x:otherwise> | 的子標簽,它出現在標簽之后,只有當先前的條件結果為“false”運行它。 |
<x:transform> | 應用一個 XSL 轉換到一個XML文件中。 |
<x:param> | 在XSLT樣式表中使用轉換標簽設置參數。 |
標簽詳解:http://www.cnblogs.com/EasonJim/p/6958988.html
六、JSTL函數標簽庫
JSTL函數標簽庫包含了大量的標准函數,其中大多數都是御用字符串處理的函數。下面是在JSP頁面中引入JSTL函數標簽庫時需要使用的指令:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
接下來的是JSTL函數標簽庫的標簽:
函數 | 描述 |
---|---|
fn:contains() | 判斷輸入的字符串是否包含指定的子字符串。 |
fn:containsIgnoreCase() | 判斷輸入的字符串是否包含指定的子字符串,判斷時忽略大小寫。 |
fn:endsWith() | 判斷輸入的字符串是否以指定的字符串作為后綴。 |
fn:escapeXml() | 忽略字符串中的XML標簽。 |
fn:indexOf() | 返回字符串在指定的字符串第一次出現的位置。 |
fn:join() | 連接數組中所有的元素到一個字符串中。 |
fn:length() | 返回集合中的項數或者字符串的字符數。 |
fn:replace() | 返回用輸入字符串替換到給定的字符串所有出現的位置中所得到的新字符串。 |
fn:split() | 將一個字符串分割成子字符串數組。 |
fn:startsWith() | 判斷輸入的字符串是否以指定的字符串作為開頭。 |
fn:substring() | 返回字符串的子串 |
fn:substringAfter() | 返回在指定子字符串之前的字符串的子串 |
fn:substringBefore() | 返回在指定子字符串之后的字符串的子串 |
fn:toLowerCase() | 轉換字符串中的所有字符為小寫字符 |
fn:toUpperCase() | 轉換字符串中的所有字符為大寫字符 |
fn:trim() | 去除字符串兩端的空格 |
標簽詳解:http://www.cnblogs.com/EasonJim/p/6958989.html
測試工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test17/jstl