Struts 是 Apache 基金會早期旗艦項目,作為 Java EE Web 開發中 MVC 模式的經典實現,它確立了「前端控制器 + 配置文件映射 + Action 業務處理」的標準架構範式。雖然現已退出歷史舞臺,但其設計思想深度影響了 Spring MVC、WebWork 等後續框架。
validate()) 與數據回顯功能。html:form, bean:write, logic:iterate 等,簡化 JSP 開發,實現視圖邏輯與業務邏輯分離。HttpServlet,生命周期:init() 加載 struts-config.xml → service() 攔截請求 → 委派給 RequestProcessor 處理。execute(),充當控制層與模型層的適配器。Struts 本身不提供模型實現,但規範了調用方式:Action 中調用 Service/DAO (JavaBean, EJB, Hibernate 等) 完成業務邏輯與持久化。
/login.do)。ActionServlet 接收,查找 struts-config.xml 中匹配的 ActionMapping。ActionMapping 實例化或復用 ActionForm,自動填充表單數據。validate="true",調用 ActionForm.validate();失敗則返回 input 頁面。Action,調用 execute() 處理業務。Action 返回 ActionForward。ActionServlet 根據 Forward 轉發至目標 JSP 渲染響應。文章通過四個版本代碼演示了從「Servlet 硬編碼 if-else」到「配置文件驅動 + 反射 + 策略模式」的架構演進:
*.action 映射 + URL 截取路由,但 Servlet 仍臃腫。Action 接口,每個業務一個實現類;action-config.xml 映射路徑與類;Servlet 反射實例化 Action,徹底解耦。Struts 正是將 V4 中的通用邏輯(配置解析、反射實例化、FormBean 管理、Forward 轉發)封裝進框架內部,開發者只需編寫 POJO Action 與 XML 配置。
| 模式 | 應用場景 |
|---|---|
| 前端控制器 | ActionServlet 統一入口 |
| 命令模式 | Action 封裝請求處理邏輯 |
| 策略模式 | 不同 Action 實現不同業務策略 |
| 工廠模式 | RequestProcessor 創建 Action 實例 |
| 模板方法 | RequestProcessor.process() 定義處理骨架 |
Struts 通過配置文件將 URL、FormBean、Action、Forward 解耦,確立了「約定優於配置」的早期雛形。理解其源碼級流程,能幫助開發者透徹掌握現代 Web 框架的底層運作機制。