隨筆-6  評論-38  文章-40  trackbacks-0

          一 : 初識JSTL

          JSTL :JSP標準標記庫(JSP Standard Tag Library,JSTL)是一個實現Web應用程序中常見的通用功能的定制標記庫集,這些功能包括 :

          1 迭代
          2 條件判斷
          3 數據管理格式化
          4 XML操作
          5 數據庫訪問

          JSTL 1.0 有四個定制標記庫:

          1 core
          2 format
          3 xml
          4 sql

          1.core 標記庫提供了定制操作,通過限制了作用域的變量管理數據,以及執行頁面內容的迭代和條件操作。

          2.format 標記庫定義了用來格式化數據(尤其是數字和日期)的操作。它還支持使用本地化資源束進行 JSP 頁面的國際化。

          3.xml 庫包含一些標記,這些標記用來操作通過 XML 表示的數據。

          4.sql 庫定義了用來查詢關系數據庫的操作。


          二 : 補充 :

          JSP技術的優勢之一在于其定制標記庫工具。除了核心JSP標記,如 jsp:include 之外,定制標記庫工具使您能夠創建唯一的標記來描述以站點或應用程序為導向的操作。一旦您創建了定制標記庫(簡稱 taglib),當您擴展項目或轉向另一個項目時您可以重復使用這些標記。您還可以將taglib傳遞給其它開發人員,從而他們可以在自己的網站上使用,或者在您Web應用程序的其它部分使用。在這一系列的下一部分,我將向您展示如何創建自己的定制標記庫,但現在我們將重點關注JSP標準標記庫(JSTL)。

          JSTL實際上是一組標準化用于JSP 1.2的定制標記庫。許多JSTL標記都與核心JSP標記類似,但它們可以提供更多的功能。例如,

          c:import?標記與我們在前一部分中介紹的?include?和?jsp:include?指令極其類似(見?參考資料)。?與include指令一樣,?c:import?可以幫助您讀取(populate)您Web站點或Web應用程序的頁面,但其功能性擴展超出了核心JSP標記的范疇。?

          在 JSP最佳實踐這一部分,我們將使用 c:import 標記來了解如何將Web頁面從JSP轉變成JSTL。但是,在開始使用新標記之前,我們需要將JSTL裝載到Web容器中。

          JSTL 設置

          雖然JSTL計劃捆綁到下一波Web容器中,但您目前必須自己進行設置。按以下步驟操作以將JSTL裝載到Web容器中:

          從 apache.org下載 jakarta-taglibs-standard-current.tar.gz 。

          解壓縮下載的文件。
          將 jakarta-taglibs/standard-1.0.3/tld/c.tld 拷貝到 WEB/INF/tlds 目錄。

          將 jakarta-taglibs/standard-1.0.3/lib 中的所有JAR文件拷貝到 WEB-INF/lib 目錄。

          將以下顯示的條目添加到 WEB-INF/web.xml 部署描述符中。

          < taglib >
          ??
          < taglib-uri > http://java.sun.com/jstl/core </ taglib-uri >
          ??
          < taglib-location > /WEB-INF/tlds/c.tld </ taglib-location >
          </ taglib >


          重啟Web容器。
          這是JSTL設置的速成版本,它可以滿足大多數情況。更詳細信息請參閱 參考資料部分。

          聯合 JSTL標記

          如果您希望在JSP頁面上使用任何JSTL標記,您首先必須在該頁面上聲明標記庫前綴和URL。我們正在使用核心JSTL庫,因此使用的標準前綴是 c (代表 核心)。表1顯示增加了 taglib 指令的Web站點索引文件:


          表1:索引文件的taglib指令

          < %@?page? language ="java" ?contentType ="text/html" ?% >
          < %@?taglib? prefix ="c" ?uri ="http://java.sun.com/jstl/core" ?% >

          < html >
          ????
          < head >
          ?????????
          < title > newInstance.com </ title >
          ?????????
          < meta? http-equiv ="Content-Type" ?content ="text/html;?charset=iso-8859-1" ? />
          ?????????
          < link? href ="/styles/default.css" ?rel ="stylesheet" ?type ="text/css" ? />
          ????
          </ head >

          ????
          < body >
          ????????
          < jsp:include? page ="header.jsp" ?flush ="true" >
          ?????????????
          < jsp:param? name ="pageTitle" ?value ="/oblog312/newInstance.com" />
          ?????????????
          < jsp:param? name ="pageSlogan" ?value ="?" ? />
          ????????
          </ jsp:include >

          ????????
          < %@?include? file ="/navigation.jsp" ?% >
          ????????
          < jsp:include? page ="bookshelf.jsp" ?flush ="true" ? />

          ????????
          < jsp:include? page ="/mt-blogs/index.jsp" ?flush ="true" ? />

          ????????
          < %@?include? file ="/footer.jsp" ?% >
          ????
          </ body >
          </ html >

          在向JSP頁面添加了JSTL taglib之后,您可以使用核心庫中的任何標記,只需把標記的前綴改為 c 。為了了解這一流程,我們將嘗試把頁面從 jsp:include 標記轉換成 c:import 標記。 表2顯示了本系列第二部分介紹的 jsp:include 實例(見 參考資料)轉為使用新 c:import 標記。


          表2:轉為JSTL

          < %@?page? language ="java" ?contentType ="text/html" ?% >
          < %@?taglib? prefix ="c" ?uri ="http://java.sun.com/jstl/core" ?% >

          < html >
          ????
          < head >
          ?????????
          < title > newInstance.com </ title >
          ?????????
          < meta? http-equiv ="Content-Type" ?content ="text/html;?charset=iso-8859-1" ? />
          ?????????
          < link? href ="/styles/default.css" ?rel ="stylesheet" ?type ="text/css" ? />
          ????
          </ head >

          ????
          < body >
          ????????
          < jsp:include? page ="header.jsp" ?flush ="true" >
          ?????????????
          < jsp:param? name ="pageTitle" ?value ="/oblog312/newInstance.com" />
          ?????????????
          < jsp:param? name ="pageSlogan" ?value ="?" ? />
          ????????
          </ jsp:include >

          ????????
          < %@?include? file ="/navigation.jsp" ?% >

          ????????
          < c:import? url ="bookshelf.jsp" ? />
          ????????
          < c:import? url ="/mt-blogs/index.jsp" ? />

          ????????
          < %@?include? file ="/footer.jsp" ?% >
          ????
          </ body >
          </ html >

          這一段程序與前面一段JSP程序之間唯一的區別是 :

          我們在c:import?中使用了?url?屬性
          而不是在?jsp:include?中使用?page?屬性

          非常簡單,是不是?做一個娛樂性練習,嘗試自己轉換一個頁面,只需運行我們在“使用jsp:include管理動態內容”(本系列第二部分,參閱 參考資料)中使用的JSP程序代碼并將其轉換成JSTL,如表2所示。

          如果您進行了仔細研究,您可能注意到我避免改變表2中的header inclusion程序代碼。header程序代碼包含參數,它增加了在此討論的復雜性。在 JSP 最佳實踐的下一部分,您將了解如何使用 c:import 來傳遞參數。我還將向您介紹 c:import 標記的一些特性,它可以提供比簡單的 jsp:include 標記更多的功能。

          posted on 2006-11-26 14:09 一手的小窩窩 閱讀(236) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 涿州市| 辽阳县| 岐山县| 澎湖县| 鹤庆县| 开远市| 泗阳县| 夏河县| 卢龙县| 鄱阳县| 邵武市| 古田县| 林甸县| 巴彦县| 西和县| 昆明市| 贵定县| 祁阳县| 沭阳县| 安康市| 乐业县| 库伦旗| 杂多县| 常宁市| 油尖旺区| 永仁县| 金秀| 昆明市| 松桃| 攀枝花市| 青岛市| 长沙市| 双柏县| 日土县| 绥阳县| 渭南市| 萨迦县| 博野县| 阳曲县| 江源县| 唐河县|