JSTL簡介

JSTL簡介

從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。

1.JSTL的邏輯組成

筆者在寫本章內容時的JSTL規範的最新版本是JSTL 1.1,它是JSP 2.0最新規範中的一個重要組成部分。JSTL 1.1中包含四個標籤庫和一組EL函數。爲方便用戶使用,JSP規範中描述了JSTL的各個標籤庫的URI地址和建議使用的前綴名,如表8.1所示。本章中在使用JSTL標籤時,使用的都是這些建議的前綴。

表8.1  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中提供的這套數據庫標籤庫沒有多大的實用價值。

4XML標籤庫中包含對XML文檔中的數據進行操作的標籤。例如,解析XML文檔、輸出XML文檔中的內容,以及迭代處理XML文檔中的元素。因爲XML廣泛應用於WEB開發,對XML文檔的處理非常重要,XML標籤庫使處理XML文檔變得簡單方便,這也JSTL的一個重要特徵。  

5JSTL中提供的一套EL自定義函數包含了JSP頁面製作者經常要用到的字符串操作。例如,提取字符串中的子字符串、獲取字符串的長度和處理字符串中的空格等。

2.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 類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章