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

表現層框架三雄對決:Struts vs Tapestry vs JSF 深度比較

     編輯:J2EE

表現層框架核心功能抽象

所有框架必須實現三大功能:

  1. 視圖顯示組件內容(非硬編碼 Java 代碼)
  2. 事件觸發與參數提交(Form/Link)
  3. 頁面導航跳轉
表現層框架功能架構圖

詳細比較表

維度StrutsTapestry 3.0JSF
組件要求繼承 ActionForm繼承 BaseComponent 或隱式調用普通 POJO,@ManagedBean,無繼承限制
視圖組件粒度1:1:1 (Action:Form:Page),難引入多組件任意位置嵌入,數量無限制同 Tapestry,彈性高
頁面分區Tiles 標籤庫 + tiles-def.xml組件自帶視圖,自然組合Subview + 標籤庫,複用 Layout 需配合 Tiles
頁面跳轉html:link 寫死 path,耦合配置目標為組件名,無 path 概念導航規則 + from-outcome,標籤庫實現
參數傳遞多參數麻煩直接調用組件賦值,無限制參數分離傳遞
事件粒度Form 級單一事件欄位級事件,實作 PageListener欄位級事件,實作 ActionListener

Struts 組件編程痛點

  • 多組件需塞入單一 ActionForm(大雜燴)或手工放入 Request/Session(退化為 JSP 編程)
  • 不同 Action 處理需用 Tiles 並行或串行 Forward,複雜度高
  • 標籤庫與自訂組件結合點麻煩

Tapestry 優勢

  • 組件庫取代標籤庫,無「標籤-組件」結合問題
  • 頁面跳轉目標即組件名,簡潔無 path 維護
  • 強大自然的頁面組合機制

JSF 定位:中庸之道

  • 類似 Struts:標籤庫 + 組件,但組件無繼承限制
  • 類似 Tapestry:細粒度事件、組件模型
  • 非純組件框架,靈活度遜於 Tapestry

選型建議

場景推薦理由
高靈活度頁面、複雜組件組合Tapestry純組件架構,組合最自然
一般資料錄入、表單密集系統Struts / JSF成熟穩定,生態豐富
新專案JSF標準規範,組件生態最豐富
既有 Struts 專案維持 Struts遷移成本高,收益有限
需遷移JSF + Tapestry 並評視專案屬性決定

其他特性

  • 三者皆支援多種客戶端語言(HTML/WML/XUI)
  • 隱喻:Struts=左派、Tapestry=右派、JSF=中間派(Sun 聯盟中庸策略)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved