JSP 標準標記庫

來源:互聯網
上載者:User

JSP 標準標記庫(Standard Tag Library,JSTL)是一組以標準化格式實現許多通用的Web網站功能的定製標記。在JSP最佳實務這一部分,Brett McLaughlin將向您介紹JSTL,闡述如何轉變JSP頁面來使用高功能性的標記。
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="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="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中使用了url屬性,而不是在jsp:include中使用page屬性。非常簡單,是不是?做一個娛樂性練習,嘗試自己轉換一個頁面,只需運行我們在“使用jsp:include管理動態內容”(本系列第二部分,參閱參考資料)中使用的JSP程式碼並將其轉換成JSTL,如表2所示。

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

http://www.uml.org.cn/j2ee/j2eeshy.htm
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.