不宜使用 JSP 技術(shù)的情形
盡管JSP技術(shù)廣受歡迎,但它卻不是唯一選擇。而且,也有一些充分的理由不使用這項(xiàng)技術(shù)。在 Servlets.com 上的一篇文章中,Jason Hunter 指出了 JSP 環(huán)境的七個(gè)問題(參閱參考資料)??偨Y(jié)起來,那些問題是:
· 將(原始 Java 代碼形式的)業(yè)務(wù)邏輯置于頁(yè)面上的誘惑很大。
· 大多數(shù)普通任務(wù)的性能需要 java 代碼。
· 簡(jiǎn)單的任務(wù)很難,因此,非 Java 設(shè)計(jì)者無法執(zhí)行這些任務(wù)。
· JSP 環(huán)境中的循環(huán)很笨拙 — 定制標(biāo)記令人信服地解決了這一問題。
· 會(huì)出現(xiàn)無用的錯(cuò)誤消息。
· JSP 編程需要 Java 編譯器。
· 生成的中間servlet浪費(fèi)了空間。
注:自 Jason 最初寫這篇文章以來,JSP技術(shù)規(guī)范已經(jīng)經(jīng)歷了兩次修訂,上面的一些問題已經(jīng)得到了部分解決。然而,JSP 技術(shù)仍然有其不足。
除了 Jason 列舉的那些問題之外,我也想補(bǔ)充 JSP 技術(shù)的另一個(gè)問題:
· 很輕易由于部署一個(gè)帶有錯(cuò)誤的 JSP 頁(yè)面而無意中破壞網(wǎng)站中的某個(gè)頁(yè)面(或多個(gè)頁(yè)面)。
· 一些模板引擎已經(jīng)被開發(fā)出來以替代 JSP 技術(shù)。它們包括 WebMacro、Velocity、Enhydra xmlC 以及本文的主題——Tea。
介紹 Tea
Tea 是一種簡(jiǎn)單的模板語(yǔ)言,它已由 Walt Disney Internet Group(WDIG)作為開放源碼發(fā)布。Tea 是 Disney 的許多網(wǎng)站背后的技術(shù)選擇,這些網(wǎng)站包括 ESPN.com、Disney.com 和 ABCNews.com。
Tea 的目標(biāo)是提供簡(jiǎn)單安全的模板引擎以便用最少的錯(cuò)誤構(gòu)建高度動(dòng)態(tài)的網(wǎng)站。這一目標(biāo)是通過最少的編程構(gòu)造和更簡(jiǎn)單、更不易混淆的語(yǔ)言機(jī)制來實(shí)現(xiàn)的。Tea 留給我們的是類似于 Html 但動(dòng)態(tài)性一樣高的語(yǔ)言。由于 Tea 的簡(jiǎn)單性,Web 開發(fā)團(tuán)隊(duì)可以聘請(qǐng)專業(yè)性不太強(qiáng)的程序員——WDIG 稱這樣的人員為技術(shù)制作者——來制作站點(diǎn)的表示層。
使用 Tea 構(gòu)建的網(wǎng)站有三種主要組件:
· TeaServlet
· 一個(gè)或多個(gè) Tea 模板
· 一個(gè)或多個(gè) Tea 應(yīng)用程序
TeaServlet 是 Tea 模板編譯器和執(zhí)行引擎。它對(duì)于 Tea 模板就象 Tomcat 的 Jasper 對(duì)于 JSP 頁(yè)面。TeaServlet 編譯 Tea 模板(假如必要的話),在收到請(qǐng)求時(shí)執(zhí)行它們。
Tea 模板是JSP頁(yè)面的 Tea 等價(jià)物。然而,和 JSP 編程不一樣,Tea 模板不經(jīng)過到 Java Servlet 代碼這一中間轉(zhuǎn)換。相反,Tea 編譯器直接將 Tea 模板編譯成類文件。這是一項(xiàng)重要的差異,它直接解決了 Jason Hunter 的 JSP 問題列表中的第六和第七個(gè)問題,間接地解決了第五個(gè)問題(隨后您將看到)。
Tea 應(yīng)用程序是一種機(jī)制,通過這種機(jī)制使得業(yè)務(wù)邏輯可為 Tea 模板所用。Tea 應(yīng)用程序通過 Tea 應(yīng)用程序的上下文實(shí)現(xiàn)的 public 方法來暴露業(yè)務(wù)邏輯。這些方法可以作為可從任何 Tea 模板調(diào)用的函數(shù)獲得。Tea 模板和 Tea 應(yīng)用程序之間的交互類似于 JSP 環(huán)境中 JSP 技術(shù)和 JavaBeans 之間的交互。
安裝 Tea
Tea 和 Tomcat
在為本文編寫代碼時(shí),我使用 Jakarta Tomcat 4.0.4 作為我的 servlet 容器。這些安裝指示信息假定您正在使用 Tomcat 4.0.4 作為您的 servlet 容器,還假定 Web 應(yīng)用程序名為“teademo”。您的安裝可能會(huì)有些變化,這取決于您對(duì)服務(wù)器的選擇以及 Web 應(yīng)用程序名稱。
可以從網(wǎng)址為http://opensource.go.com 的 WDIG 網(wǎng)站下載 Tea,它可以以 Apache 樣式許可證獲得。除了其它內(nèi)容以外,分發(fā)版中包含 TeaServlet.jar 文件,它組成了 Tea 引擎。您也可以在 WDIG 的網(wǎng)站上找到一個(gè)名為 Kettle 的用于 Tea 的 IDE,不過我在本文中不討論 Kettle。
下載了 TeaServlet.zip 文件之后,將其解壓縮然后把 TeaServlet.jar 文件移到 Tomcat 的webapps/teademo/WEB-INF/lib 目錄。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注