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