Tapestry 是一個用java寫成的,基于組件的網絡程序框架。Tapestry不僅僅是一個簡單的模板化的系統。Tapestry在Java Servlet基礎上的建立的一個平臺,在平臺上可以建立一個動態的,交互的網站。它不僅僅是一個模板語言,而且是一個真正的框架,利用一些簡單的,可以重用的組件來建立復雜的應用程序。Tapestry在建立網絡程序的時候簡化了很多易錯的工作,例如接受各種任務,比如分發接受到的請求,建立和解釋URL,處理本地化和國際化的問題以及更多。
對Tapestry的高度評價是"對象,方法和屬性",也就是說,不僅僅使開發者關注Servlet的API:requests, responses, sessions, attributes, parameters, URLs等等,Tapestry使得開發者更關注于對象(包括Tapestry的頁面和組件,而且包括程序的對象),對象的方法以及那些對象的javaBean的屬性。也就是說,在一個tapestry的程序中,用戶的動作(點擊鏈接,提交表單)會導致對象的屬性的變化,這些屬性和用戶支持的方法(包括程序邏輯)組合在一起。
在Tapestry中,你不需要寫servlet,你只要寫一些Listener方法,你同樣不需要為servlet建立URL,你可以利用一個存在的組件(例如DirectLink)并配置他的listener的參數來調用方法。那么Listener的方法到底做了什么呢?它和后臺系統進行交互(通常是無狀態的session EJB)或者是做一些其他的和request相關的記錄,同時提供給用戶一個新的頁面。基本上是這個servlet的核心代碼。在tapestry中,你不需要寫那些重復的,機械的代碼(例如建立url,分發請求,管理服務器段的狀態等等),因為那些都被tapestry這個框架完成了。
但是這并不表示Servlet API是不可訪問的,它僅僅是不跟一個典型的tapestry用戶相關。
本文檔描述了很多tapestry的一些內在的情況。本文不是教程(教程是另外一個單獨的文檔)。事實上,本文檔是給一些tapestry的用戶的指南,目的是給那些想使用tapestry的開發者。
tapestry目前的版本是 4.0,在過去的十幾年里已經過了長足的發展。Tapestry始終關注于生成動態的html代碼,盡管有大量的軟件支持XHTML XML 和 WML。
幾乎所有的Tapestry的API都是一接口的形式出現,同時有默認的實現。只要用新的對象取代現有的接口,框架的行為可以被很容易的取代。最平常的例子就是重載一個存貯的頁面和它的組件(也許存貯在數據庫中)。
最后,Tapestry有值得自豪的完整的JavaDoc的文檔。本文檔是用來支持那份文檔的,來填補那分文檔的一些不明顯的不足。當然JavaDoc是最好的文檔。
也許理解Tapestry最難的部分就是它是一個以基于組件的,而不是以基于操作的。大多數的技術(Struts,servlets, PHP等等)都是基于操作的。當你建立一個servlet以后,當用戶點擊一個鏈接或者提交一個form的時候機會調用它。你必須選定一個適當的鏈接,和要傳遞參數的名字和類型,這樣你才能在URL中傳遞你所需要的信息。
對于那些操作(點擊鏈接或提交表單),你同樣必須負責去連接你的外部頁面(不管他們是JSP,servlets, PHP,或者其他形式的模板技術)。這需要你建立URL并且把他們放到一個<a>的標簽中,或者是放在一個<form>標簽的action屬性中。
tapestry中所有的東西都是不同的。Tapestry程序由頁面組成,頁面是由小的組件構成,組件本身也有可能由其他組件構成。每一個頁面都由一個唯一的名字,頁面中的每個組件都有它唯一的ID...這就是組件模型。同時,每一個組件都有一個地址,可以快速的和URL進行綁定。
事實上,在“向購物車添加物品”的操作中,你不需要寫servlet,甚至也不用寫組件。你只需要拿一個已有的組件,例如(DirectLink),然后配置它。當這個組件被顯示的時候,它會建立一個回調的鏈接,當你點擊這個鏈接的時候,這個回調鏈接(包括了頁面名稱和頁面內的組件的ID)將會調用組件上的方法,然后這個方法就會調用你的程序制定的Listener方法
posted on 2005-12-16 16:02
我的java天地 閱讀(736)
評論(2) 編輯 收藏