首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

JSF 與 Tapestry 全方位對比:頁面開發、編程模型、請求生命週期三大維度深度剖析

     編輯:J2EE

Struts 基於 Action、無狀態模型將逐漸淡出,基於組件、事件驅動的 JSF (JSR-127) 與 Tapestry 成主流競爭者。本文基於 JSF 1.1 與 Tapestry 3.0.3(涉及 4.0)從頁面開發、Java 編程模型、請求處理生命週期三維度詳細對比,助選型。

框架背景

  • JSF:JCP JSR-127 標準,Sun 提供 RI 1.1,Craig McClanahan (Struts 作者) 為設計者之一;MyFaces 為 Apache 實現;主流 IDE 皆支援;JSF 1.2 將納入 J2EE 5.0。
  • Tapestry:2000 年 SourceForge 起源自 Apple WebObjects,2003 年入 Apache,非 JSR 標準,純開源項目,當前 3.0.3,4.0 即將推出。

共同特性

  • 屏蔽 Servlet API,提升抽象層級。
  • 頁面顯示元素綁定 Java 物件屬性(字串/數字/日期等),物件維護狀態;用戶交互映射為 Java 事件處理方法。
  • 支援組件化開發,組件可重用,內建標準組件庫。

對比 1:頁面開發 —— JSP vs 純 HTML

維度JSFTapestry
模板技術JSP 標籤純 HTML + jwcid 屬性
瀏覽器預覽不可直接預覽,需 IDE 或部署運行可直接在瀏覽器預覽(放入 body 即可)
標籤格式非標準 HTML良好格式,成對出現
支援標記語言JSPHTML、WML
多設備適配宣稱單模板多設備,實際協調差異困難,需學新標籤庫同樣支援多設備,但 HTML 基礎更易控制
設計師協作衝突:設計師習慣 HTML 工具,不願用 JSF IDE → 工作轉嫁給 Java 程式員設計師可用流行 HTML 工具編寫/預覽,協作順暢

Facelets 方案浮現:靈感源自 Tapestry 模板,讓 JSF 擺脫 JSP 依賴,支援 Tapestry 風格標籤。未來將被廣泛採用,或影響 JSF 後續版本。Tapestry 在表現層具備明顯優勢。

對比 2:Java 編程模型 —— IoC 與靈活度

維度JSFTapestry
頁面定義文件無,僅全局 faces-config.xml 定義 Managed Bean每頁需頁面定義文件,綁定控制元素與 Java 類
Java 類約束Managed Bean 為標準 JavaBean,無繼承強制頁面類必須繼承 BasePage/AbstractPage,與框架緊耦合(4.0 改善)
代碼組織靈活性組合方式豐富:指定 Bean 完成功能、Bean 間引用共享僅能用類繼承,非理想
Spring 整合Managed Bean 即 IoC,JSF-Spring 擴展無縫整合3.0 整合較弱,4.0 引入類似 Managed Bean 技術、支援 Java 5 註解、減少 XML
Session/Application 狀態管理直觀:EL 直接訪問任意作用域 Bean相對較差,4.0 大幅改進

JSF 編程模型靈活性優於 Tapestry。

對比 3:請求處理生命週期

  • JSF:單一清晰六階段(Restore View → Apply Request Values → Process Validations → Update Model Values → Invoke Application → Render Response),可從第二階段跳轉至最後,Phase Listener/Event Handler/Converter/Validator 可攔截階段。
  • Tapestry:依賴引擎服務,每個服務有獨立生命週期(Direct Service 處理表單提交、Page Service 渲染頁面),可為特定需求創建自定義引擎服務並定制生命週期。

JSF 生命週期概念更易理解;Tapestry 可針對特定操作定義生命週期,某些問題解決更優雅。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved