JSP標準標簽庫實現,Apache Standard Taglib 1.2.1 發布
Apache Standard Taglib 1.2.1 發布了,主要的改進包括:
- 來自Apache Jakarta的項目過渡到Apache Tomcat
- 針對JSTL1.2增加新功能的實現; 需要 Java 1.5
- 換成基于Maven的構建
- 重命名和修改包結構;添加OSGI元數據
- 通過直接使用Xalan來改進XML處理性能
從JSP 1.1規范開始JSP就支持使用自定義標簽,使用自定義標簽大大降低了JSP頁面的復雜度,同時增強了代碼的重用性,因此自定義標簽在 WEB應用中被廣泛使用。許多WEB應用廠商都開發出了自己的一套標簽庫提供給用戶使用,這導致出現了許多功能相同的標簽,令網頁制作者無所適從,不知道 選擇哪一家的好。為了解決這個問題,Apache Jakarta小組歸納匯總了那些網頁設計人員經常遇到的問題,開發了一套用于解決這些常用問題的自定 義標簽庫,這套標簽庫被SUN公司定義為標準標簽庫(The JavaServer Pages Standard Tag Library),簡稱 JSTL。使用JSTL可以解決用戶選用不同WEB廠商的自定義標簽時的困惑,JSP規范同時也允許WEB容器廠商按JSTL標簽庫的標準提供自己的實 現,以獲取最佳性能。
由于JSTL是在JSP 1.2規范中定義的,所以JSTL需要運行在支持JSP 1.2及其更高版本的WEB容器上,例如,Tomcat 5.5。
JSTL的邏輯組成
筆者在寫本章內容時的JSTL規范的最新版本是JSTL 1.1,它是JSP 2.0最新規范中的一個重要組成部分。JSTL 1.1中包含四個標 簽庫和一組EL函數。為方便用戶使用,JSP規范中描述了JSTL的各個標簽庫的URI地址和建議使用的前綴名,如表8.1所示。本章中在使用JSTL標 簽時,使用的都是這些建議的前綴。
表 JSTL
標簽庫功能描述 |
標簽庫的URI |
建議前綴 |
核心標簽庫 |
http://java.sun.com/jsp/jstl/core |
c |
XML標簽庫 |
http://java.sun.com/jsp/jstl/xml |
x |
國際化/格式化標簽庫 |
http://java.sun.com/jsp/jstl/fmt |
fmt |
數據庫標簽庫 |
http://java.sun.com/jsp/jstl/sql |
sql |
EL自定義函數 |
http://java.sun.com/jsp/jstl/functions |
fn |
下面對JSTL的各個標簽庫進行簡單的介紹:
(1)核心標簽庫中包含了實現WEB應用中的通用操作的標簽。例如,用于輸出一個變量內容的<c:out>標簽、用于條件判斷的<c:if>標簽、用于迭代循環的<c:forEach>標簽。
(2)國際化/格式化標簽庫中包含實現WEB應用程序的國際化的標簽。例如,設置JSP頁面的本地信息、設置JSP頁面的時區、綁定資源文件,使本地敏感的數據(例如數值、日期等)按照JSP頁面中設置的本地格式顯示。
(3)數據庫標簽庫中包含用于訪問數據庫和對數據庫中的數據進行操作的標簽。例如,從數據源中獲得數據庫連接、從數據庫表中檢索數據等。由于在軟件分層的開發模型中,JSP頁面僅用作表現層,我們一般不在JSP頁面中直接操作數據庫,而是在業務邏輯層或數據訪問層操作數據庫,所以,JSTL中提供的這套數據庫標簽庫沒有多大的實用價值。
(4)XML標簽庫中包含對XML文檔中的數據進行操作的標簽。例如,解析XML文檔、輸出XML文檔中的內容,以及迭代處理XML文檔中的元素。因為XML廣泛應用于WEB開發,對XML文檔的處理非常重要,XML標簽庫使處理XML文檔變得簡單方便,這也是JSTL的一個重要特征。
(5)JSTL中提供的一套EL自定義函數包含了JSP頁面制作者經常要用到的字符串操作。例如,提取字符串中的子字符串、獲取字符串的長度和處理字符串中的空格等。
JSTL的物理組成
完整的JSTL應包含SUN公司提供的jstl.jar 包和WEB容器產商提供的JSTL實現包,以Apache Jakarta 小組提供的JSTL實現包為例,完整的JSTL包含jstl.jar、standard.jar 和 xalan.jar 三個 jar 包。sun 公司提供的jstl.jar 包封裝了 JSTL所要求的一些API 接口和類,Apache Jakarta 小組編寫的 JSTL API 實現類封裝在standard.jar包中。由于 JDK 在 JDK 1.5 版本中才引入了 XPath API,而 apache Jakarta 小組開發的 JSTL API 是在 JDK1.5 之前推出的,所以 apache Jakarta 小組在 JSTL 中使用的是他們自己開發的 XPath API,這些 API 封裝在 xalan.jar 包中。Standard.jar 包中包括核心標簽庫、國際化/格式化標簽庫、數據庫標簽庫中的標簽和標準的EL自定義函數的實現類,xalan.jar 包中包括 JSTL 解析 XPath 的相關 API 類。
項目地址:http://tomcat.apache.org/taglibs/index.html