瞭解 Tapestry【轉】

在這篇由兩部分構成的文章的前一部分中,作者兼 developerWorks 的熱心貢獻者 Brett McLaughlin 對 Tapestry 進行介紹,從它的安裝一直到文件結構。您可以看到 Tapestry 怎樣幫助使用 HTML 和模板標記進行基於 servlet 的 Web 應用程序開發。

如果想出售產品,那麼擁有在線設施是很重要的,不論是運作一家數百萬美元的公司,還是隻是想在假日處理幾千個線手鐲。在某些情況下,修補一些 Web 頁面,並採用一些像 PayPal 或 eBay 這樣的預先打包好的支持系統處理銷售事務,也可以做得足夠好。但是一個全面的、設計良好的 Web 應用程序應當能把在線銷售從小打小鬧提升到專業的、動態的在線商店的層次。每個人都知道,消費者在商店中買的東西比從跳蚤市場買的東西多。

問題在於,在進入大多數 Web 開發框架時 —— 特別是在使用 Java™ 作爲編程語言的時候 —— 會發現複雜性太高。Struts、JSF 和 Spring 都是優秀的 Web 開發框架,但是它們中沒有一個是適合膽小的人。(如果您曾經試着向新 Java 開發人員解釋控制反轉,您就會知道我談的是什麼了!)幸運的是,還有更容易的選擇。

Tapestry 是在 Apache 軟件許可下發布的一個開放源碼的、基於 Java 的框架,它是專門爲了簡化 Web 開發設計的。它有以下關鍵特性:

  • 易於安裝:不需要是 Web 應用程序高手,就可以讓 Tapestry 啓動並運行。

  • 易於使用:只需要基本的 Java 和 HTML(是的,確實是 HTML,而不是 servlet)技能就可以編寫 Tapestry 應用程序。

  • 易於擴大規模。當站點增長超過 10、50 或 100 個頁面時,也不必拋棄 Tapestry。對於多數 Web 應用程序來說,Tapestry 都足夠健壯。   

在這篇文章中(系列的前半部分),我會帶您入 Tapestry 的世界。我將帶您一起經歷下載和安裝這個框架的每一步,然後運行一些示例應用程序,讓您理解它的工作方式。在下一篇文章中,我將介紹更高級的示例,讓您更好地掌握 Tapestry 的核心框架。在瞭解核心框架之前,您將完全適應了 Tapestry 環境。

簡化的安裝

您很快就會瞭解到 Tapestry 的口號是簡單。這種簡單不代表原始 或不成熟,而是代表易於理解易用 和直觀。因爲安裝是任何一項新技術的入門,所以毫不誇張地說,安裝 Tapestry 非常容易。對於入門者來說,只有很少的前提要求,而這些要求對於 Web 開發人員來說,都是相當標準的,所以它們可能已經安裝了。(如果沒有,那麼請參閱 參考資料 一節獲得技術下載。)

Tapestry 中的標註

Java 5.0 中的一項新特性是標註語法。使用標註,可以用一種與內聯註釋非常相似的樣式對代碼進行標記,標註以 @ 符號開始。可以使用標註爲類添加元數據,然後編譯器或 Tapestry 這樣的框架可以使用元數據。具體來說,Tapestry 允許使用標註,直接在代碼中描述原本需要在額外頁面或組件中定義的行爲。請參閱 參考資料 學習關於 Java 5.0 中標註的更多內容。

前提條件 1:Java 5.0

顯然,使用 Tapestry 的第一個要求是,在機器上要有 Java 平臺正在運行。雖然 Tapestry 幾乎可以和任何相對較新的 Java 版本合作(Java 1.3 及以上版本),但最好是使用 Java 5.0。Tapestry 的幾個可選特性只能在 Java 5 下工作。而且,現在真的是沒有什麼理由 轉換到 Java 5:它是穩定並經過良好測試的,已經經過了最初始的發展痛苦。

前提條件 2:構建工具

有了 JVM 和 servlet 引擎,還需要 Apache Ant 這樣的構建工具。雖然下載 Ant 很容易,但需要確定在路徑中有 Ant 的二進制代碼(對於 Linux/Mac OS X 系統是 ant,對於 Windows 系統是 ant.bat)。如果在空目錄中輸入 ant,可能會看到下面這樣的輸出:


Buildfile: build.xml does not exist!
Build failed

 

前提條件 3:微內核

最後需要安裝一個微內核,叫作 HiveMind,用它爲 Tapestry 應用程序登錄對象。我不會在這篇文章中詳細討論 HiveMind —— 它本身就值得用幾篇文章討論!—— 但是您會看到 Tapestry 如何使用它。在從 Jakarta Web 站點下載了 HiveMind 之後,請把它放在與 Tapestry 相同的目錄中;例如,可能使用 /usr/local/java/hivemind-1.1 或 C:/java/hivemind-1.1。任何位置都可以,只要記住把它放在哪兒了!

Tapestry 實際上還有許多依賴項,但是安裝了 HiveMind、Ant 和 Java 5.0 之後,就能讓 Tapestry 自己處理剩下的依賴項。因爲 Tapestry 是一個 Web 應用程序框架,所以在準備運行應用程序時,還需要一個 servlet 引擎,例如 Apache Tomcat(請參閱 參考資料)。Tapestry 應用程序打包成 WAR 文件(Web 應用程序檔案),這樣就可以把它們放進 servlet 引擎的 Web 應用程序目錄中。這篇文章的所有示例都使用 Tomcat,但是可以很容易地把 Tapestry 用於您選擇的其他 servlet 引擎。

 




回頁首


下載 Tapestry 4.0

所有的前提條件就緒之後,請前往 Jakarta Tapestry 的主頁(請參閱 參考資料),從 Apache 的鏡像站點下載 Tapestry。先選擇最新的 Tapestry 4.0 版,編寫這篇文章時是 tapestry-4.0-beta-12.tar.gz(Windows 用戶請選擇 .zip 文件)。一般來說,最好是用穩定版來學習一個新框架,而不要使用更新的 beta 代碼。但是,Tapestry 4.0 在 2005 年 11 月已經接近 beta 週期的末尾,相對於 Tapestry 3.x 來說提供了顯著的 改進。(在閱讀這篇文章的時候,Tapestry 4.0 可能已經能夠使用了。)

在 Tapestry 的下載站點上時,您可能還想下載文檔集。在編寫這篇文章的時候,文檔集文件叫作 tapestry-4.0-beta-12-docs.tar.gz。展開這個檔案,應當得到名爲 tapestry-4.0-beta-12 的新文件夾,但是如果下載了更新版的 Tapestry,文件夾名稱可能會有變化。

請把這個文件夾移動到自己喜歡的保存 Java 項目安裝的地方;例如 /usr/local/java 這樣的位置就很好,或者也可以考慮 C:/java。在每種情況下,都要新建一個 Tapestry 目錄。在這個目錄中,有許多信息;請參考圖 1 瞭解頂級目錄結構:


圖 1. Tapestry 目錄結構
Tapestry 擁有預先構建好的 JAR 文件和許多源代碼 

Tapestry 已經就位!

術語安裝 對於 Tapestry 來說,有點兒名不符實!Tapestry 與在後臺運行的 Java 應用程序或者在網絡上提供內容的 servlet 引擎不同。相反,它是一組可以在應用程序中使用的實用工具 —— 從類到標記。所以不是 “安裝” Tapestry,而是讓 Web 應用程序可以使用它,並把 Tapestry 和它的依賴項與 Web 應用程序綁在一起。

變化、變化、變化

JAR 文件的名稱可能略有不同,這與下載的 Tapestry 版本對應。但是,不管 Tapestry 的主版本號是多少,所有 Tapestry 安裝中都應當有四個 JAR 文件。

設置 Tapestry 主要是把正確的類組(打包到 Java JAR 文件中)放在正確的目錄中。首先,需要找到核心的 Tapestry JAR 文件。這些文件包含 Web 應用程序中要使用的全部 Tapestry 代碼,它們位於 Tapestry 發行目錄的根目錄中:

  • tapestry-4.0-beta-12.jar 包含 Tapestry 的框架部分。   
  • tapestry-annotations-4.0-beta-12.jar 包含在 Java 5.0 上支持 Tapestry 標註所需要的類。   
  • tapestry-contrib-4.0-beta-12.jar 包含那些發佈到 Tapestry 中,但是對操作來說並非必需的組件。   
  • tapestry-portlet-4.0-beta-12.jar 包含的類讓 Tapestry 可以支持 JSR-168 —— portlet JSR。   

請把這四個 JAR 文件放在使用 Tapestry 的 Web 應用程序的 WEB-INF/lib 目錄中,就準備好了 —— 差不多是這樣。在啓動應用程序之前,只需要再做一點兒 設置。

 




回頁首


設置依賴項

Tapestry 試圖爲 Web 應用程序提供一種簡化的編程模型和易於使用的環境。它的做法是抽象出重複的、常見的任務的細節,所以它使用許多 實用工具。不論是支持表達式,還是登記對象,還是創建漂亮的用戶界面組件,Tapestry 都依賴第三方庫讓 Web 開發對於開發人員儘可能容易。

幸運的是,Tapestry 會自己進行大多數依賴項的下載和安裝工作。唯一的麻煩就是跟蹤這些額外的 JAR 文件,但是正如在這一節中會看到的,這不是個大問題。

因爲 Tapestry 用 HiveMind 來確定和下載依賴項,所以第一步是讓 Tapestry 知道 HiveMind 文件在哪兒。請轉到 Tapestry 目錄 —— 可能是 /usr/local/java/tapestry-4.0-beta-12 —— 然後進入 config 目錄。應當看到一個 build.properties 文件。打開它的時候,會看到類似清單 1 的內容。在這裏列出了 Tapestry 的幾個核心庫和依賴項,以及它們的位置。這個列表並不反映 Tapestry 需要的全部依賴項,但是反映了編譯基本的 Tapestry 應用程序需要的依賴項集合。


清單 1. 默認的 Tapestry build.properties 文件



# Copyright 2005 The Apache Software Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES or CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

jboss.dir = c:/Work/jboss-3.0.6

jython.dir = c:/Work/Jython21

jetty.dir = c:/Work/Jetty-4.2.22

tomcat.dir = C:/Program Files/Apache Group/Tomcat 4.1

hivebuild.dir=c:/workspace/jakarta-hivemind/hivebuild

clover.dir=c:/Work/clover-1.0

jboss.dir=C:/jboss-4.0.2

 

如果這些項目和分配給它們的位置看起來比較怪,那就對了。實際上應當清除掉屬性文件中的全部內容,除了以 hivebuild.dir 和 tomcat.dir 開始的之外,因爲這些依賴項應當已經就緒。請修改這些依賴項的位置,使其與 HiveMind 和 Tomcat 的安裝位置匹配,build.properties 的最終版本看起來應當像清單 2 這樣:


清單 2. 修改後的 build.properties 文件



# Copyright 2005 The Apache Software Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES or CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

tomcat.dir=/usr/local/java/jakarta-tomcat-5.5.9

hivebuild.dir=c:/workspace/jakarta-hivemind/hivebuild

 

保存這個文件,並返回 Tapestry 的根目錄,設置 Ant。

設置 Ant

Ant 的安裝非常簡單,只是需要些時間。首先在 Tapestry 的根目錄下輸入 ant install。可以忽略所有文本,直到看到 像這樣的文本 爲止。

不必擔心奇怪的格式;請輸入 “continue” 並按下回車,就開始下載 Tapestry 的額外依賴項。這一步驟要花些時間,所以如果構建過程看起來已經執行了一段時間,請不要擔心:要下載多個庫,還要編譯許多代碼。甚至還會看到安裝了一些測試,然後可能得到 以下(明顯的)錯誤

對於高級開發人員

如果想在 Tapestry 開發中使用額外項目,只需修改 build.properties,反映這些項目的位置即可。然後,只需刪除沒有 的項目對應的行,並讓 Tapestry 下載實際的依賴項。

不要被錯誤消息嚇倒:一定要閱讀各種 echo 語句的輸出;它們表明 JUnit 已經下載並安裝,只需要重新啓動構建過程。

構建和更多構建

這是對的,現在還沒有完。在提示符下,再次輸入 ant install,繼續構建。安裝了 JUnit 之後,構建會運行許多 JUnit 測試,以確保 Tapestry 的設置正確。因爲這個構建過程要花許多時間,所以可以去喝杯咖啡,或者到另一臺機器上編寫一些 XHTML。如果事情進展順利,構建過程的末尾 看起來會像這樣

這些庫都是什麼?

構建完成之後,請進入 ext-package/lib 目錄,列出目錄列表。應當看到像這樣的列表:


[bmclaugh:/usr/local/java/tapestry-4.0-beta-12/ext-package/lib]$ ls
cglib-full-2.0.1.jar                    jdom-1.0.jar
cglib-full-2.0.2.jar                    junit-3.8.1.jar
commons-codec-1.3.jar                   log4j-1.2.8.jar
commons-fileupload-1.0.jar              ognl-2.6.7.jar
commons-logging-1.0.4.jar               oro-2.0.8.jar
easymock-1.1.jar                        portlet-api-1.0.jar
easymockclassextension-1.1.jar          servletapi-2.3.jar
hivemind-1.1-rc-1.jar                   spring-1.1.jar
hivemind-lib-1.1-rc-1.jar               tapestry-4.0-beta-12.jar
javassist-3.0.jar                       tapestry-annotations-4.0-beta-12.jar
jboss-j2ee-3.2.1.jar                    tapestry-contrib-4.0-beta-12.jar
jboss-j2ee-4.0.0DR4.jar                 tapestry-portlet-4.0-beta-12.jar
jcharts-0.6.0.jar                       vlibbeans-4.0-beta-12.jar

 

可以看到,構建過程下載了許多 額外的庫。其中有許多是在構建 Tapestry 時使用的,其他一些是在編譯時使用的。但是,對於運行時,需要把下面這些 Tapestry JAR 文件放在 Web 應用程序的 WEB-INF/lib 目錄中:

  • tapestry-4.0-beta-12.jar   
  • tapestry-annotations-4.0-beta-12.jar   
  • tapestry-contrib-4.0-beta-12.jar   
  • tapestry-portlet-4.0-beta-12.jar   

另外,還需要把以下依賴項文件放在 Web 應用程序的 WEB-INF/lib 目錄中:

  • commons-codec-1.3.jar:URL 編碼和解碼工具的文件。   
  • commons-fileupload-1.0.jar:處理多部分文件上載的庫。   
  • commons-logging-1.0.4.jar:Tapestry 用來記錄信息和錯誤的框架。   
  • hivemind-1.1-rc-1.jar:Tapestry Java 對象的服務註冊表。   
  • hivemind-lib-1.1-rc-1.jar:HiveMind 庫。   
  • javassist-3.0.jar:運行時代碼增強庫。   
  • ognl-2.6.7.jar:導航對象圖的表達式語言。   
  • oro-2.0.8.jar:模式匹配的表達式庫。   

看起來可能有許多文件,但是對於 Java 庫來說,還是很常見的;只要把它們放在正確的位置,就不用再照顧它們了。關於安裝的最好的消息就是:現在已經完成了!前提軟件安裝完成、Tapestry 和全部依賴項設置好之後,就可以看看一些 Tapestry Web 應用程序是什麼樣了。

發佈了25 篇原創文章 · 獲贊 0 · 訪問量 3572
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章