From Gossip@caterpillar

JSP/Servlet: 簡介 JSTL



先前您已經學會各種自訂標籤的方法,對於一些常用的標籤,您不用自行開發,網路上已經有一些前人開發過的自訂標籤,您可以以免費或購買的方式取得它們, JSTL即是一個通用的標準函式庫,JSTL全名JavaServer Page Standard Tag Library,是一個標準化的標籤函式庫,由Apache的Jakarta計畫實作,它集成了一些簡單且常用的標籤,諸如流程控制、輸出輸入、SQL、 XML處理等等,您可以在下面的網址取得最新的發行版面:
http://www.apache.org/dist/jakarta/taglibs/standard/

在撰寫這篇文章的同時,JSTL最新的版面是1.1,必須有支援Servlet 2.4/JSP 2.0的Container才可以運用,您可以取得上列網址下的jakarta-taglibs-standard-current.zip檔案,即為 JSTL最新的發行版本,取回後解開檔案,將lib目錄下的jstl.jar與standard.jar複製至您的Web應用程式下的WEB- INF/lib/下,並將tld目錄下的tld檔案複製至您的Web應用程式tld檔案的放置處,例如WEB-INF/tlds/下,接下來您就可以在 JSP網頁中使用JSTL。在lib目錄下的old-dependencies則是舊版本的JSTL 1.0。

在解開的zip檔案中,還有standard-doc.war與standard-examples.war兩個檔案,您可以將之複製至 Tomcat的webapps目錄,啟動Tomcat之後,就會自動解開這兩個war檔案,前者是JSTL的文件說明檔案,後者則是JSTL的一些範例檔 案,我們並不打算詳細介紹JSTL的使用,對於一些標籤的使用,您可以查看文件或範例檔案來查看使用方式。

JSTL主要分作五個大類,以下來自JSTL文件說明:
  • 核心標籤庫
    • URI:http://java.sun.com/jsp/jstl/core
    • 前置:c
    • 範例:<c:tagname ...>

  • XML處理標籤庫
    • URI:http://java.sun.com/jsp/jstl/xml
    • 前置:x
    • 範例:<x:tagname ...>

  • I18N格式標籤庫
    • URI:http://java.sun.com/jsp/jstl/fmt
    • 前置:fmt
    • 範例:<fmt:tagname ...>

  • 資料庫存取(SQL)標籤庫
    • URI:http://java.sun.com/jsp/jstl/sql
    • 前置:sql
    • 範例:<sql:tagname ...>

  • 函式標籤庫
    • URI:http://java.sun.com/jsp/jstl/functions
    • 前置:fn
    • 範例:fn:functionName(...)

看一個簡單的例子,瞭解用JSTL撰寫出來的網頁是什麼樣子:

  • jstlDemo.jsp
<%@taglib prefix="c" 
           uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
 <c:if test="${param.password == '1234'}">
    ${param.user} 請領取您的<b>密碼禮物</b>!
 </c:if>
 
</body>
</html>
  
這是一個簡單的密碼認證網頁,test屬性為true時就會顯示標籤間的文字,也就是只要傳送request時包括 password=1234,就可以看到<c:if>之間的文字內容,您可以看到JSTL搭配EL使用,在整個網頁中看不到 Scriptlet,沒有Java語法,熟悉標籤使用的網頁設計人員學習JSTL會比學習Java語言來得容易,對於實現邏輯與視圖分離也比較容易。