|
簡介 STL允許JSP程序員使用tags而不是JAVA代碼來編程。為了展示為什么這個是更優(yōu)越的,下面將給出示例。我們會檢查一個非常簡單的從1數(shù)到10的JSP頁面。我們將通過兩種方法來檢查,一種是基于JSP的scriptlet,一種是JSTL。當這個計數(shù)器頁面的例子是用JSP scriptlet來編寫時,JSP頁面如下所示: <html> 正如你在上例中看到的看到的那樣,使用scriptlet代碼產生的頁面源代碼會包含混合的HTML標簽和JAVA語句。這種混合型的編程方式不是最佳的方式,其主要原因有以下幾點。 主要的原因是它的可讀性。這個可讀性主要依賴于人類和計算機。JSTL可以允許程序員查看一個只包含完整HTML和類似HTML的標簽的頁面。 SP scriptlet代碼的可讀性不適合人類。這種混合的scriptlet和HTML代碼對于計算機來說也很難讀。尤其是針對那些HTML官方工具如Dreamweaver和Microsoft FrontPage,所表現(xiàn)出來的不直觀性更突出。目前,大多數(shù)HTML官方工具會以不可編輯塊(non-editable blocks)的形式來隔離JSP scriptlet代碼。這種HTML官方工具通常是不能直接修改JSP scriptlet代碼的。 下面這段代碼展示這個計數(shù)器范例如何使用JSTL方式來編寫。正如你所看到的,這個代碼列表有不變性,僅僅一個標簽被使用。HTML和JSTL標簽混合起來產生了這個程序。 <%@ taglib uri="http://java./jstl/core" prefix="c" %> <body> <br /> 當你檢查上面這個例子的代碼時,你會看到,JSP頁面只包含標簽。上面的代碼使用諸如<head>和<br>這樣的HTML標簽。這種標簽用法不限制于HTML標簽。這段代碼也可以使用諸如<c:forEach>和<c:out>這樣的JSTL標簽。在本文中,將會介紹一些JSTL的基礎。 安裝JSTL 要在Tomcat中安裝JSTL,有下面三個步驟: 拷貝JSTL JAR文件到Tomcat的lib目錄中. 如果你使用的是Windows, 那么lib目錄最可能的位置是C:\Program Files\Apache Tomcat 4.0\webapps\ROOT\WEB-INF\lib。你應該拷貝這些JAR包到你的Tomcat JAR目錄。 拷貝JSTL TLD文件到Tomcat的web-inf目錄中 你檢查JSTL發(fā)布文件時,你應該會注意到有8個文件是以TLD擴展名結尾的。所有這8個文件都應該復制到你的web-inf目錄中。 修改web.xml文件包含這些TLD文件。 最后,你必須修改你的web.xml,添加8個標簽庫的表項(entry)。需要添加的表項如下所示: <taglib> <taglib> <taglib> <taglib> <taglib> <taglib> <taglib> 完成上面這三步后,你現(xiàn)在可以準備測試你的JSTL安裝了??梢酝ㄟ^創(chuàng)建一個包含JSTL的JSP頁面來驗證。一個最簡單的范例程序就是上面的那個計數(shù)器程序。你應該將它放置在你的Webroot目錄中(C:\Program Files\Apache Tomcat 5.0\webapps\ROOT)。一旦Tomcat啟動后,你應該能夠通過瀏覽 http://127.0.0.1:8080/count.jsp來查看這個頁面。 如果你沒有正確安裝JSTL,那么可能不會出現(xiàn)錯誤信息。如果JSTL不能解釋你的標簽含義,那么它在Web瀏覽器上會直接跳過。然后Web瀏覽器將解釋這些未知的HTML標簽。多數(shù)瀏覽器僅僅只是忽略這些未知的HTML標簽。 JSTL標簽庫 核心標簽庫—包含一些Web應用的必要的標簽。核心標簽庫的實例包括循環(huán),表達式賦值和基本輸入輸出。.
EL表達式語言 <p> 正如你看到的,total和shipping相加后會產生HTML并且在瀏覽器中顯示它們的值。這些表達式也可以在JSTL標簽中使用。JSTL1.0的一個重要問題是,JSTL不能用在JSP1.2的版本上。因為JSP1.2不支持EL,所以有必要提供一些額外的JSTL標簽來幫助EL的使用。例如,如果你想使用JSTL來顯示上面的表達式,你可以使用下面的代碼。 <p> 值得注意的是,JSTL不需要JSP2.0來運行。通過提供一個能夠顯示EL表達式的標簽,就可以達到這樣的需求。 JSTL范例 <%@ taglib uri="http://java./jstl/core" prefix="c" %> <body> <br /> <br /> <c:if test="${param.guess!=‘Java‘}">You are wrong <br /> <br /> <form method="post">Guess what computer language <input type="submit" value="Try!" /> <br/> 這個簡單的Web頁面顯示一個表單,要求用戶猜測程序所想的計算機語言。當然,計算機想的是“Java”。這個頁面通過檢查“是否已提交”來開始。這使得表單和處理表單的代碼可以放在同一個頁面中。是通過下面的JSTL if語句實現(xiàn)的。 <c:if test="${pageContext.request.method==‘POST‘}"> 現(xiàn)在你看到了,<c:if>標簽使用EL表達式來決定是否請求的方式是POST的。如果數(shù)據(jù)被post到頁面,那么用戶輸入的他們的猜想值就會存儲在名為“guest”的參數(shù)中。這是因為“guest”是表單輸入項的名字。我們現(xiàn)在必須檢查是否這個參數(shù)等于“Java”。這個是通過下面的<c:if>標簽來完成: <c:if test="${param.guess==‘Java‘}">
JSTL的核心標簽也包含循環(huán),疊代器和變量處理。通過使用標簽,你能在collections里進行iterate,訪問用戶的會話數(shù)據(jù)(session data),執(zhí)行其他的核心任務等。除了核心標簽庫,XML,數(shù)據(jù)庫和格式化標簽庫也提供了更多高級的用處。 (End) 注:EL Expression Language這里翻譯成EL表達式語言,有的是翻譯成EL表達語言,是一個意思。 Translated by Caiyi0903(Willpower),2004.2.19 |
|
|