Struts 與 JSF/Tapestry 同屬表現層框架,但本質不同:後者為事件驅動組件模型,前者為純 MVC 模式。本文從事件機制、表單綁定、配置、驅動包組成、導航流程、Managed Bean 機制六個維度深度剖析。
Action 接收表單提交事件(Command 模式),一個表單對應一個 Action(或 DispatchAction),即一表單一事件,屬粗粒度 Application Event。web.xml 配置 FacesServlet 與映射(*.faces),與 Struts ActionServlet 配置幾乎一模一樣。faces-config.xml 對應 struts-config.xml:定義導航規則(from-view-id、from-outcome、to-view-id)與 Managed Bean(識別符、類名、作用域)。JSP 頁面:`
ActionForm,可定義作用域(session/request/application)。Struts 以 Action 為中心、無狀態、粗粒度;JSF 以組件為中心、有狀態、細粒度事件、標準化組件模型、內建驗證/轉換/導航。選型視專案複雜度、團隊習慣、長期維護考量而定。