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

表現層框架架構比較:Struts vs Tapestry vs JSF

     編輯:Java 程式設計入門

Struts、Tapestry、JSF 是當前 J2EE 表現層新舊組合的框架技術。從誕生時間看,Struts 最早且應用最廣;Tapestry 3.0 漸受重視;Sun 推出 JSF 標準技術,雖初期不成熟留有空窗期,但隨 JSF 1.1 標準發布正式正面交鋒。

實際上 JSF 與 Tapestry 非直接競爭,各有側重,但細微差異在大型專案中可能帶來不同體驗。

表現層框架核心功能架構

基於 MVC 基準模式,表現層框架必須實現三大功能:

  1. 當前頁面顯示組件物件內容,而非純 JSP 需在頁面寫「調用物件方法」的 Java 代碼。
  2. 用戶提交按鈕或連結觸發事件,將當前頁面參數提交至伺服器(表單提交與帶參數連結)。
  3. 頁面視圖間直接跳轉導航。

三大框架技術細節比較表

比較項目StrutsTapestry 3.0JSF
View 顯示組件要求組件必須繼承 ActionForm分顯式/隱式調用,組件繼承 BaseComponent普通 POJO,無需繼承(Managed Bean)
View 顯示粒度頁面只能顯示對應表單的 ActionForm,配置中 Action:ActionForm 頁面通常 1:1:1可將組件嵌入頁面任意行,組件數量無限制同 Tapestry
頁面分區Tiles 標籤庫實現,需額外 tiles-def.xml 配置組件自有視圖頁面,調用即實現多頁面組合,強大自然組件+標籤庫實現 Subview,重用 Layout 仍需結合 Tiles
頁面跳轉html:link 寫死目標 URL,需對照配置 path 命名,與 Action 耦合URL 名稱即目標組件名稱,不涉及路徑操作,方便穩固類似 Struts,需在配置檔查找,與組件分離
參數傳遞html:link 傳遞超過一個參數處理麻煩直接調用組件賦予參數,無數量限制參數分離傳遞給組件
事件觸發表單 submit 激活,無法細化到表單欄位可給每個欄位貼事件,事件組件實作 PageListener 介面同 Tapestry,事件組件實作 ActionListener 介面

Struts 組件編程模型痛點

Struts 引入多個組件較複雜,無法直接引入,需繞彎:

  • 同一 Action 處理多組件:(1) 將多組件裝入單一 ActionForm(如 MapForm),易成大雜燴違反 OO 封裝;(2) 手工放入 request/session scope,實質回歸 JSP 編程。
  • 不同 Action 處理不同組件:(1) 用 Tiles 並行輸出至同頁不同區域;(2) 多流程串聯,前一個 Action forward 到下一個,最後輸出 JSP 可用前面所有 ActionForm。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved