JSP編程新組件-- JSTL介紹

火星人 @ 2014-03-10 , reply:0


  JSTL介紹中是允許JSP程序員使用標籤進行編程而不是Java代碼.為了說明為什麼這個是可取的,給出一個快速簡單的小例子.我們就舉個非常簡單的例子從1數到10.我們用常規的基於scriptlet JSP網頁和JSTL兩種方式來製作這個網頁.當這個數到10的例子是使用scriptlet JSP編製的,JSP網頁會有如下顯示:

  

< html>

  < head>

  < title>Count to 10 in JSP scriptlet< /title>

  < /head>

  < body>

  < %

  for(int i=1;i< =10;i )

  {%>

  < %=i%>< br/>

  < %

  }

  %>

  < /body>

  < /html>

  正如你從以上例子中所看到的,使用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標籤混合在一起產生的例子.

  

< %@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

  < html>

  < head>

  < title>Count to 10 Example (using JSTL)< /title>

  < /head>

  < body>

  < c:forEach var="i" begin="1" end="10" step="1">

  < c:out value="${i}" />

  < br />

  < /c:forEach>

  < /body>

  < /html>

  當你檢查以前的代碼的時候,你可以看到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 FilesApache Tomcat 4.0webappsROOTWEB-INFlib.JSTL發布時就有很多JAR文件包括其中.你需要複製每一個JAR文件到Tomcat JAR目錄中.

  複製JSTL TLD文件到Tomcat的web-inf目錄web-inf目錄的位置是C:Program FilesApache Tomcat 4.0webappsROOTWEB-INF.如果你研究JSTL分配文件,你應該注意到8個擴展名是TLD的文件.這8個文件要複製到你的web-inf目錄中.

  修改web.xml文件來包括TLD文件,你修改你的web.xml文件,並為這8個你添加的標籤庫添加入徑.這個由在主< web-app>指令中添加< taglib>指令.

  

< taglib>

  < taglib-uri>http://java.sun.com/jstl/fmt< /taglib-uri>

  < taglib-location>/WEB-INF/fmt.tld< /taglib-location>

  < /taglib>

  < taglib>

  < taglib-uri>http://java.sun.com/jstl/fmt-rt< /taglib-uri>

  < taglib-location>/WEB-INF/fmt-rt.tld< /taglib-location>

  < /taglib>

  < taglib>

  < taglib-uri>http://java.sun.com/jstl/core< /taglib-uri>

  < taglib-location>/WEB-INF/c.tld< /taglib-location>

  < /taglib>

  < taglib>

  < taglib-uri>http://java.sun.com/jstl/core-rt< /taglib-uri>

  < taglib-location>/WEB-INF/c-rt.tld< /taglib-location>

  < /taglib>

  < taglib>

  < taglib-uri>http://java.sun.com/jstl/sql< /taglib-uri>

  < taglib-location>/WEB-INF/sql.tld< /taglib-location>

  < /taglib>

  < taglib>

  < taglib-uri>http://java.sun.com/jstl/sql-rt< /taglib-uri>

  < taglib-location>/WEB-INF/sql-rt.tld< /taglib-location>

  < /taglib>

  < taglib>

  < taglib-uri>http://java.sun.com/jstl/x< /taglib-uri>

  < taglib-location>/WEB-INF/x.tld< /taglib-location>

  < /taglib>

  < taglib>

  < taglib-uri>http://java.sun.com/jstl/x-rt< /taglib-uri>

  < taglib-location>/WEB-INF/x-rt.tld< /taglib-location>

  < /taglib>

  完成以上三個步驟,你已經準備好測試你的JSTL安裝.這個可以通過使用JSTL創建一個JSP網頁來完成.最簡單的例子就是以上所示的"count to ten"例子.你應該把你的JSP文件放到Webroot目錄中(C:Program FilesApache Tomcat 4.0webappsROOT).一旦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>

  Your total, including shipping is ${total shipping}

  < /p>

  正如你從以上代碼中所看到的,添加了"total" 和"shipping"值並作為HTML顯示而產生的.這些表達式也可以再JSTL標籤中使用.JSTL1.0其中的一個重要需求就是JSTL要和JSP1.2一起使用.因為JSP1.2不支持EL, 又必要提供一些而外的JSTL標籤以便使用EL.例如,如果你想要使用JSTL來顯示以上的表達式,你可以使用以下的代碼:

  

< p>

  Your total, including shipping is < c:out var="${total shipping"/>

  < /p>

  JSTL的一個需求就是不需要JSP2.0來運行.通過提供一個可以顯示EL表達式的標籤,這個需求才能被滿足.

  JSTL示例

  現在我們就來研究一個使用JSTL的簡單例子.在這個例子中,我們將研究許多Web應用程序都能做到的一個常見的程序.我們將看到如何POST一個表格並從其中運行結果.能夠這樣做的一個簡單的程序,見如下顯示:

  

< %@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

  < html>

  < head>

  < title>If with Body< /title>

  < /head>

  < body>

  < c:if test="${pageContext.request.method=='POST'}">

  < c:if test="${param.guess=='Java'}">You guessed it!

  < br />

  < br />

  < br />

  < /c:if>

  < c:if test="${param.guess!='Java'}">You are wrong

  < br />

  < br />

  < br />

  < /c:if>

  < /c:if>

  < form method="post">Guess what computer language

  I am thinking of?

  < input type="text" name="guess" />

  < input type="submit" value="Try!" />

  < br />

  < /form>

  < /body>

  < /html>

  這個簡單的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'}">

  You guessed it!

  < /c:if>

  如你所見,如果語句評估正確,< 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應用程序.




[火星人 via ] JSP編程新組件-- JSTL介紹已經有168次圍觀

http://www.coctec.com/docs/java/show-post-61546.html