簡介
Jakarta Tapestry是一個開源的java Web應用框架。你或許會說:"大同小異的東西罷了."多數
情況下,我同意你的觀點,然而,只要花上些許時間研究一下,你會發現Tapestry跟別的框架大為不同,它是值得嚴厲對待的。
Tapestry是一個基于控件的框架以致于用它開發Web應用類似開發傳統的GUI應用。你用Tapestry開發Web應用時你無需關注以操作為中心的(Operation-centric) Servlet API.引用Tapestry網站上的一句話:"Tapestry用對象(objects),方法(methods),屬性(PRoperties)替代以往的URLs和查詢參數, 重新詮釋Web應用開發.Tapestry 3.0即將發布,它有大量的改進和新的特性。
Tapestry的目標
簡單性
Tapestry應用與傳統的Servlet應用相比代碼量更少。大多數傳統的Servlet應用包含如下厭煩和
重復的任務:解析查詢參數,處理Httpsession對象,構建URLs。Tapestry消除了傳統Servelt應用中許多無趣的"銜接"代碼("plumbing" code)使開發者把精力集中到應用邏輯上來。
一致性
Tapestry為開發Web應用的頁面提供了一致的方式。這樣有助于消除傳統Servlet應用開發中臆測。由于所有Tapestry應用中的頁面都是用相同的可復用的控件組織而成,所以工作方式是相似的。
效率
Tapestr應用擁有高度的可升級性,它利用緩存和對象池使每個請求的處理時間最小化。Tapestry應用擁有跟傳統Servlet應用相仿的性能。
錯誤反饋
任何開發過Servlet/jsp應用的人毫無質疑有類似經歷:為了找出Web.xml文件有什么錯誤,不得不花費大量時間察看瀏覽器中的堆棧信息。Tapestry擁有優秀的錯誤報告方式,最值得一提的是它會指出哪個文件以及那一行導致了錯誤。
與Struts比較
既然Apache Struts可能是當今應用最廣泛的Web應用框架,拿Tapestry與它比較是唯一公平的。以下是一些觀察比較,它們來源于為這篇文章開發的幾個簡單的Tapestry應用和為幾個Struts工程的工作經歷。
Struts的優點
1 一個Servlet/JSP開發者熟悉Struts無需太久。然而Tapestry的學習曲線會長一點,因為它與流行的Web應用框架不太相同 。
2 Struts在Java社區里被廣泛接受和使用。為你的項目找一個好的Struts開發人員并非難事,Tapestry近來在開發者社區里 贏得一些關注,然而仍有許多Java老手不知道Tapestry為何物。
3 既然Struts被如此廣泛的使用,所以有很多Struts資源可供參考。相比大多數開源軟件,Tapestry擁有非常可觀的資源和文檔,但跟Struts相比仍有差距。
Tapestry的優點
1 你開發一個Tapestry應用無需關注Servlet API,你也無須為你的Servlet應用寫一些典型的"銜接"代碼。雖然Struts簡化了工作,然而Servlet API 仍是你需面對的。
2 Tapestry的頁面模板除了幾個非凡屬性和標識就是一個標準的Html文件。 假如你是一個開發小組中的HTML設計高手,然而你不懂Java或JSP,這就給你帶來很大方便。
3 因為Tapestry頁面是標準的HTML,所以可以用HTML所見即所得(WYSIWYG)編輯器編輯和預覽該頁。當一個頁需要修改它的外觀并不需要通知服務器讓它重新編譯JSP.
4 Tapestry不需要一個至高的,整個應用范圍的配置文件。Tapestry應用中的每一頁是獨立的,改變一頁不會影響開發其他 頁面的開發者,因為并沒有一個配置文件把所有頁面的瀏覽粘連在一起。
5 Tapestry擁有極好的錯誤報告。假如你在一個頁的模板或頁面規范犯了一個錯誤,Tapestry會指出導致錯誤的行號。
6 用Tapestry開發是種樂趣。這樣說聽上去似乎老調,然而用Tapestry開發一個Web應用相比應用其他流行的框架更為自然有趣。用Tapestry開發是應用了一種基于控件的架構,與開發傳統的GUI應用非常相似。
Tapestry 架構
Tapestry框架是標準Servlet API的一種擴展。它需要J2SDK1.2或更高版本的J2SDK和一個與Servlet API 2.2(或更高)兼容的應用服務器/Servlet容器。
一個Tapestry應用由許多擁有唯一名稱的頁面組成。一個頁面由一個模板和一些可復用的控件構成。模板由標準的HTML標簽和一些額外的屬性和標簽構成,這些額外的屬性和標簽是為了告訴Tapestry框架這個頁面的那些部分是由Tapestry控件組成。
簡單的Tapestry應用
為了最好的描述構建一個Tapestry頁面的方方面面,我們可以看看這個Pig Latin翻譯器應用的代碼。這個應用只有一個頁面,在這頁里輸入一個text值把它翻譯成Pig Latin,然后把翻譯好的值顯示給用戶。
在Tapestry應用中每個頁由3個部分組成:一個HTML模板,一個頁面規范文件,一個Java類。
這里有這個頁面屏幕抓圖:
新聞熱點
疑難解答