JSP(JavaServer Pages)技術是對Servlet的進一步抽象,它由JCP(Java Community Process)開發,是用於生成動態內容的開放式的、可免費獲取的規范,也是J2EE(Java 2 Enterprise Edition)規范的重要組成部分。許多商業應用服務器如BEA WebLogic、IBM WebSphere、Live Jrun和Orion都支持JSP技術。
從機票預訂系統、銀行系統到購物系統,Web上到處都在應用JSP技術。新發布的2.0版是對JSP1.2的升級,增加了一些有趣的新特性。JSP2的目標是使動態網頁的設計更加容易,而且無需學習Java編程語言。
本文內容包括:
提供具有豐富示例代碼的教程來使你熟悉JSP2.0
介紹JSP2.0的新特性
提供利用JSP2.0開發應用程序的一些體會給出了一些示例代碼,對這些代碼稍加修改即可用於你自己的應用程序。
如果你還不熟悉JSP,那麼直接從JSP2.0入手是一個不錯的主意。但是如果希望學習JSP1.2,也許你需要從JSP教程開始學習。
JSP 2.0
JSP 2.0是對JSP 1.2的升級,增加了幾個有趣的新特性,可以使Web應用程序設計人員和開發人員的工作更容易一些。JSP 2.0的目標是比以前更易於使用,更重要的是無須學習Java語言本身就可以使用它。它增加了一種稱為SimpleTag的新擴展機制來簡化標簽API(Tag API)。
除了其他一些改進外,JSP 2.0引入的最主要的新特性包括:
一種簡單的表達式語言(EL),能夠用來容易地從JSP頁面訪問數據,這種表達式語言簡化了基於JSP的不含腳本的應用程序的編寫,不需要使用Java Scriptlet或者Java表達式;
用於直接使用JSP技術來定義可重用的自定義行為的新語法,該語法使用.tag和.tagx文件,這類文件可由開發人員或者網頁作者編寫;
3XML語法得到了實質性的改進,增加了新的標准文件擴展名(.tagx用於標簽文件,.jspx用於JSP文件)。
本文主要討論表達式語言、簡化的標簽API和標簽文件。相信目前的JSP開發人員將會發現這些重要的特性不但有趣,而且非常有用。 為何要從1.2跨越到2.0?
在Java規格請求(JSR 152)中版本號最初定為1.3。但是正如你將在後面看到的那樣,由於這些新特性對JSP應用程序的開發模型產生了如此深刻的影響,專家組感到有必要把主版本號升級到2.0,這樣才能充分反映這種影響。此外,新的版本號也有助於把開發人員的注意力吸引到這些有趣的新特性上來。令人欣慰的是,所有合法的JSP1.2頁面同時也是合法的JSP2.0頁面。
JSP 2.0起步
在著手學習JSP 2.0之前,你需要一個支持JSP2.0和Java Servlet 2.4規范的JSP環境。幸運的是,Jakarta Tomcat 5.0(alpha測試版)支持新的JSP2.0和Servlet 2.4規范,可以從http://jakarta.apache.org/builds/jakarta-tomcat/release/v5.0.4-alpha/下載並安裝Tomcat 5.0。
JSP表達式語言
向JSP網頁傳遞信息是通過JSP scoped屬性和請求參數完成的。專門為網頁作者量身定做的一種表達式語言(EL)把JSP scoped屬性提升為從業務邏輯向JSP頁面傳遞信息的標准方式。但是要注意,盡管這種表達式語言是JSP的一個重要特性,它並不是一種通用的程序語言。它僅僅是一種數據訪問語言,可以方便地訪問和處理應用程序數據,而無需使用scriptlet或者請求時(request-time)表達式的值。
在JSP2.0之前,網頁作者只能使用表達式<%= aName %>訪問系統的值,比如下面的例子:
<someTags:aTag attribute="<%= pageContext.getAttribute("aName") %>">
或者使用自定義JavaBeans組件的值:
<%= aCustomer.getAddress().getCountry() %>
表達式語言允許網頁作者使用簡單的語法訪問對象。比如要訪問一個簡單變量,可以像下面這樣寫:
<someTags:aTag attribute="${ aName}">
而訪問嵌套的JavaBeans屬性,則可以像下面這樣寫:
${ aCustomer.address.country}
你可能會問,這不是JavaScript的語法嗎?完全正確!如果你使用過JavaScript,就會感到非常輕松,因為表達式語言正是借用了訪問結構化數據的JavaScript語法。
--------------------------------------------------------------------------------
注意:
表達式語言最初是作為JSP標准標簽庫(JSTL)1.0的一部分而開發的,JSTL是一種標准標簽庫,它提供對通用的、結構化的任務的支持,如迭代和條件、XML文檔處理、國際化和利用SQL訪問數據庫等。JSTL規范是由JSR 52專家組開發的。關於JSTL的介紹,請參見Faster Development with JSTL(使用JSTL加速開發).
--------------------------------------------------------------------------------