JSTL介紹—JSP編程新組件 允許用標簽編程
JSTL介紹中是允許JSP程序員使用標簽進行編程而不是Java代碼。為了說明為什么這個是可取的,給出一個快速簡單的小例子。我們就舉個非常簡單的例子從1數到10。我們用常規的基于scriptlet JSP網頁和JSTL兩種方式來制作這個網頁。當這個數到10的例子是使用scriptlet JSP編制的,JSP網頁會有如下顯示:
|
正如你從以上例子中所看到的,使用scriptlet代碼產生的網頁源代碼包括了HTML標簽和Java語句的混合。有很多原因說明為什么這種混合式編程風格不是***的。
混合scriptlet和基于標簽的代碼不是***選擇的主要原因是可讀性。這種可讀性是針對人和計算機的。JSTL允許編程者看一個由整個HTML和HTML-like標簽組成的程序。
JSP scriptlet代碼的可讀性不僅只適用于人類。Scriptlet和HTML代碼的混合也很難被計算機讀取。尤其是HTML制作工具例如某個Dreamweaver和Microsoft FrontPage。目前,大多數HTML制作工具將JSP scriptlet代碼作為不可編輯的塊區而分離開。HTML制作工具通常不直接修改JSP scriptlet 代碼。
以下代碼顯示如何使用JSTL編寫從1數到10的這個例子。正如你所看到的,這個代碼列表更連貫,因為只使用了標簽。是HTML和JSTL標簽混合在一起產生的例子。
|
當你檢查以前的代碼的時候,你可以看到JSP網頁整個是由標簽組成的。上述代碼使用了HTML標簽如< head> 和< br>。標簽的使用不僅限于HTML標簽。這個代碼也使用了JSTL標簽例如< c:forEach> 和 < c:out>。在本文中向你介紹一些JSTL的基礎知識。
安裝JSTL
為了使用JSTL,你必須安裝JSP 1.2(或更高的版本)的容器。其中最常用的JSP容器是Apache Tomcat Web server。你可以從這里http://jakarta.apache.org/tomcat/獲取一個Tomcat的副本。單獨使用Tomcat可以讓你使用常規的JSP scriptlet代碼。為了使用JSTL, 你必須安裝JSTL到Tomcat。JSTL可以從和Tomcat一樣的來源獲得。JSTL主要的URL是http://java.sun.com/products/jsp/jstl/。為了使用JSTL,你必須解壓分配文件并把它們安裝到Tomacat中的正確位置。
為了同時使用Tomcat,正確安裝JSTL遵循以下三個步驟:
復制JSTL JAR文件到Tomcat的lib目錄。
如果你使用Windows,你的lib目錄的可能位置是C:\Program Files\Apache Tomcat 4.0\webapps\ROOT\WEB-INF\lib。JSTL發布時就有很多JAR文件包括其中。你需要復制每一個JAR文件到Tomcat JAR目錄中。
復制JSTL TLD文件到Tomcat的web-inf目錄web-inf目錄的位置是C:\Program Files\Apache Tomcat 4.0\webapps\ROOT\WEB-INF。如果你研究JSTL分配文件,你應該注意到8個擴展名是TLD的文件。這8個文件要復制到你的web-inf目錄中。
修改web.xml文件來包括TLD文件***,你必須修改你的web.xml文件,并為這8個你添加的標簽庫添加入徑。這個由在主< web-app>指令中添加< taglib>指令。
|
完成以上三個步驟,你已經準備好測試你的JSTL安裝。這個可以通過使用JSTL創建一個JSP網頁來完成。最簡單的例子就是以上所示的"count to ten"例子。你應該把你的JSP文件放到Webroot目錄中(C:\Program Files\Apache Tomcat 4.0\webapps\ROOT)。一旦Tomcat服務器啟動,你可以瀏覽http://127.0.0.1:8080/count.jsp來查看你的網頁。
如果你沒有正確安裝JSTL,可能也沒有錯誤信息提示。如果JSTL不能翻譯你的標簽,它們直接通過網頁瀏覽器。網頁瀏覽器將翻譯這些標簽作為未知的HTML標簽。大多數瀏覽器都會忽略未知的HTML標簽。
JSTL標簽庫
JSTL也常常作為一個單獨的標簽庫。實際上,JSTL有4個標簽庫。這些標簽庫總結如下:
Core Tag Library—包括的標簽是Web應用程序必不可少的。core tag庫的例子包括循環,算式評估和基本的輸入和輸出。
Formatting/Internationalization Tag Library—包括的標簽是用于解析代碼的。其中一些標簽是解析代碼的,例如日期,不同的基于當前的區域。
Database Tag Library—包括的標簽是用于訪問SQL數據庫的。這些標簽通常只用于創建雛形程序。這是因為大多數程序不會從JSP網頁上直接處理數據庫訪問。數據庫訪問應該置于EJBs中通過JSP網頁進行訪問。
XML Tag Library—包括的標簽是可以用于訪問XML元素。因為XML是用在很多的Web應用程序中,XML處理是JSTL一個重要的功能。
在本文中,我們只需要大概的看幾個核心標簽(core tags)。我們將舉一個簡單的例子來展示用戶進入一個表格時如何處理數據。在我們進行這個程序之前,我們首先要看一看JSTL handles expressions。在JSTL中的表達式處理是通過使用EL表達式語言來完成的,像在JSP2.0中一樣。在下一節中,我們將檢查EL表達式語言。
EL表達式語言
JSP2.0其中一個主要的組件式叫做EL的新的表達式語言。EL廣泛應用在JSTL中。但是,重點要記住的是EL是JSP的一個特征而不是JSTL的。與JSP2.0一起使用的JSP scriptlet代碼包括EL表達式。以下的示范代碼行是在JSP scriptlet代碼中使用了EL。
< p> |
正如你從以上代碼中所看到的,添加了"total" 和"shipping"值并作為HTML顯示而產生的。這些表達式也可以再JSTL標簽中使用。JSTL1.0其中的一個重要需求就是JSTL要和JSP1.2一起使用。因為JSP1.2不支持EL, 所以又必要提供一些而外的JSTL標簽以便使用EL。例如,如果你想要使用JSTL來顯示以上的表達式,你可以使用以下的代碼:
< p> |
JSTL的一個需求就是不需要JSP2.0來運行。通過提供一個可以顯示EL表達式的標簽,這個需求才能被滿足。
JSTL示例
現在我們就來研究一個使用JSTL的簡單例子。在這個例子中,我們將研究許多Web應用程序都能做到的一個常見的程序。我們將看到如何POST一個表格并從其中運行結果。能夠這樣做的一個簡單的程序,見如下顯示:
|
這個簡單的Web網頁將顯示一個表格并詢問用戶猜一猜哪種計算機語言是程序可以考慮的。當然,計算機會考慮"Java."。本頁首先要檢查看是否一個POST被完成了。這使得表格和處理表格的代碼放在一個單一的頁面中。這個是通過以下JSTL if 語句完成的。
< c:if test="${pageContext.request.method=='POST'}"> |
這里你看到< c:if>標簽使用了一個EL表達式來評估要求的方式是否是一個POST。如果數據被粘貼到網頁,用戶輸入他們的猜測的值被儲存在一個名字叫"guess"的參數中。這是因為"guess"被指定為表格輸入條目的名字了。我們現在必須檢查看一看那這個參數是否等于"Java"。這個通過以下的< c:if>標簽來完成。
< c:if test="${param.guess=='Java'}"> |
如你所見,如果語句評估正確,< c:if>標簽的主體就被執行。在本文中,我們開始研究有關怎樣安裝JSTL和它是如何工作的基礎知識。
JSTL的核心標簽也包括了循環,反復和變量處理的標簽。通過使用這些標簽,你可以重復這些集合,訪問用戶對話數據和執行所有Web應用程序執行的其他的核心任務。除了core tag library,XML, database和formatting tag 庫也提供了更先進的用途。
總結
本文向你展示了在JSTL和JSP scriptlet編程之間的一些不同之處。如你所看到的,JSTL承認一個更一致的編程環境,通過承認HTML和程序代碼一起作為標簽來表達。JSTL和標簽庫代表了網頁編程的一個新的方法。
JSTL沒有提供一個程序員需要創建一個完整功能網頁應用程序的所有東西。此外,一些可以在JSTL中編程的程序往往***是沒有列入JSTL中。關于這個的一個***的例子就是數據庫JSTL標簽。除了每個小的Web應用程序外,它通常被認為是不好的編程習慣就是嵌入實際的數據庫命令到一個JSP網頁中。這樣的程序代碼的恰當位置是在你的Web應用程序常使用的Java beans和EJBs中。對于這種慣例,你可以考慮創建自己的標簽庫。這樣,你的JSP網頁可以使用JSTL來執行基本的并非只是你的業務的編程程序。你應該完成你自己的標簽庫來執行組件,這些只對你的業務是***的,也是在你的Web應用程序中用到的。
JSTL讓你創建一個非常一致的編程JSP技術為基礎的應用程序。這個不是通過JSTL來完成,而是通過JSTL,你自己的自定義標簽庫和一個基本的數據庫組合來完成的。了解每一個這些組件可以讓你部署一個更有效的Web應用程序。
您正在閱讀的是《JSTL介紹—JSP編程新組件 允許用標簽編程》
【編輯推薦】