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

Struts vs JSF 深度對比:Action 驅動 MVC 與事件驅動組件模型的本質差異

     編輯:J2EE

Struts 與 JSF/Tapestry 同屬表現層框架,但本質不同:後者為事件驅動組件模型,前者為純 MVC 模式。本文從事件機制、表單綁定、配置、驅動包組成、導航流程、Managed Bean 機制六個維度深度剖析。

事件模型顆粒度差異

  • Struts:Action 接收表單提交事件(Command 模式),一個表單對應一個 Action(或 DispatchAction),即一表單一事件,屬粗粒度 Application Event。
  • JSF:事件可細化至組件層級(Component Event),單一表單內各欄位可獨立觸發事件,顆粒度細。

驅動包與配置高度相似

  • JSF 需核心包 + JSTL 包 + Apache Commons 包(部署於伺服器即可),開源基因濃厚。
  • web.xml 配置 FacesServlet 與映射(*.faces),與 Struts ActionServlet 配置幾乎一模一樣。
  • faces-config.xml 對應 struts-config.xml:定義導航規則(from-view-id、from-outcome、to-view-id)與 Managed Bean(識別符、類名、作用域)。

導航流程更清晰

JSP 頁面:`` → `action` 值匹配 `from-outcome` → 導航至 `welcome.jsp`。JSF 事件觸發與頁面導航流程分離,思路比 Struts 清晰得多。

Managed Bean:超越 ActionForm

  • 類似 Struts ActionForm,可定義作用域(session/request/application)。
  • 但融入 IoC/依賴注入技術,功能遠超 ActionForm,支援 Bean 間引用、屬性注入等進階特性。

結論

Struts 以 Action 為中心、無狀態、粗粒度;JSF 以組件為中心、有狀態、細粒度事件、標準化組件模型、內建驗證/轉換/導航。選型視專案複雜度、團隊習慣、長期維護考量而定。

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