第3.1式. 使用JSTL
問(wèn)題
你需要在Struts應(yīng)用中使用JSTL標(biāo)簽苦的標(biāo)簽。
動(dòng)作要領(lǐng)
從http://jakarta.apache.org/taglibs下載Jakarta Taglibs JSTL 的參考實(shí)現(xiàn)。將jstl.jar和standard.jar文件拷貝到應(yīng)用程序的WEB-INF/lib文件夾。然后將c.tld, fmt.tld, sql.tld, 和x.tld文件復(fù)制到WEB-INF/lib目錄。
在需要時(shí)用JSTL的地方使用適當(dāng)?shù)膖aglib指令:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
Table 3-1列出了JSTL 標(biāo)簽庫(kù)和對(duì)應(yīng)的URI。
動(dòng)作變化
JSTL 是一個(gè)強(qiáng)大的標(biāo)簽庫(kù)集,完全應(yīng)該作為Struts 開(kāi)發(fā)者的工具箱之一。JSTL 包含有支持JavaBean 屬性、循環(huán)、條件邏輯、以及URL 格式化的標(biāo)簽。也有格式化和解析日期和數(shù)值的標(biāo)簽。XML 標(biāo)簽庫(kù)可以用來(lái)在頁(yè)面中解析和處理XML。SQL 標(biāo)簽庫(kù)則可以和關(guān)系數(shù)據(jù)庫(kù)交互。Functions 標(biāo)簽庫(kù)提供了一些有功的函數(shù),可用于表達(dá)始中,特別是字符串處理。
這其中最重要的就是Core 標(biāo)簽庫(kù)。這個(gè)庫(kù)包含了很多可以取代Struts beanlogic標(biāo)簽的標(biāo)簽。那為什么要使用這個(gè)標(biāo)簽而不是用Struts 標(biāo)簽?zāi)兀看鸢甘牵@些標(biāo)簽要比Struts 標(biāo)簽要更強(qiáng)大而更易于使用。但是別搞錯(cuò),Struts 項(xiàng)目并不和它是抵觸的。恰恰相反,JSTL 允許Struts 集中于它最擅長(zhǎng)的:為強(qiáng)壯的JSP Web應(yīng)用提供控制器。
我們來(lái)看看如何分別使用JSTL 標(biāo)簽和Struts 標(biāo)簽來(lái)實(shí)現(xiàn)循環(huán)和顯示輸出。首先,下面是Struts 版本:
<ul>
<logic:iterate id="cust" name="branch" property="customers">
<li>
<bean:write name="cust" property="lastName"/>,
<bean:write name="cust" property="firstName"/>
</li>
</logic:iterate>
</ul>

使用JSTL,則變得簡(jiǎn)單一些:
<ul>
<c:forEach var="cust" items="${branch.customers}">
<li>
<c:out value="${cust.lastName}, ${cust.firstName}"/>
</li>
</c:forEach>
</ul>

后者最酷的地方在于你并不是一定要一個(gè)個(gè)的進(jìn)行選擇。JSTL 可以在你便干邊學(xué)中使用它。JSP 表達(dá)式語(yǔ)言(EL) 使得訪問(wèn)各種范圍之中的ActionForms 和對(duì)象中的數(shù)據(jù)更加容易。最困難的決策不是你到底用不用JSTL,而是使用哪一個(gè)版本的JSTL。如果你使用JSP 2.0/Servlet 2.4 容器,比如Tomcat 5, 你最好使用JSTL 1.1。否則,目前你只能使用JSTL 1.0。
對(duì)于Struts應(yīng)用來(lái)說(shuō),我們還是推薦使用JSTL 標(biāo)簽。
相關(guān)動(dòng)作
第3.2式會(huì)展示如何在Struts標(biāo)簽中使用EL 表達(dá)式。
<JavaServer Pages> [Hans Bergsten 著(O'Reilly),機(jī)械工業(yè)出版中文版]就詳細(xì)涉及了JSTL,值得參考。
Sun 提供了一個(gè)JSTL 教程,地址是http://java.sun.com/tutorials/jstl.
下面地址也有一個(gè)快速參考:http://www.jadecove.com/jstl-quick-reference.pdf.
Manning 的 JSTL in Action也是一本很好的書(shū):http://www.manning.com