Struts 是 Apache 開源的 MVC Model 2 實現,由協作的類、Servlet、JSP 標簽組成。本文系統梳理框架定義、MVC 分工、控制器三大模塊、視圖標簽體系、模型選擇與狀態管理。
框架與 MVC 設計模式
框架:提供統一接口、編程方式的可重用組件集,支持擴展特定邏輯。
MVC:
- Model:業務邏輯與狀態封裝,對 View/Controller 無感知。
- View:展示層,僅讀取 Model,無業務邏輯,Model 變更需通知 View。
- Controller:接收用戶輸入,創建/設置 Model,決定流向。
Struts 以 Servlet + JSP 實現 MVC Model 2。
Struts 架構總覽
- Client Browser:HTTP 請求/響應
- Controller:
ActionServlet(命令模式),按 struts-config.xml 路由
- Business Logic:
Action 類(瘦包裝)調用業務對象
- Model State:
ActionFormBean(會話/請求級),持久級由模型組件維持
- View:JSP + 標簽庫,無流程/業務邏輯
控制器三大核心模塊
| 模塊 | 職責 | Struts 實現類 |
| 消息控制模塊 | 接收所有請求,按視圖映射分發處理邏輯 | ActionServlet、RequestProcessor |
| 消息處理模塊 | 執行具體業務邏輯,用戶擴展點 | Action 類 |
| 視圖映射模塊 | 建立控制邏輯與視圖邏輯鏈接 | ModuleConfig、struts-config.xml |
視圖組件:JSP + 擴展標簽庫
Struts 對 JSP 進行擴展封裝,提供三大標簽類別:
- HTML 標簽:表單、鏈接、圖片等 UI 元素渲染
- Logic 標簽:迭代、條件判斷、比較等流程控制
- Bean 標簽:數據緩衝讀取,如
<bean:write>
ActionFormBean 承擔視圖與控制器間數據交互,維持會話/請求級模型狀態。
模型組件:開放選擇,分級管理狀態
Struts 不綁定具體模型技術,支持:
- JavaBean(用戶自定義)
- EJB 組件
- JDO / Hibernate 等 ORM 框架
狀態級別:
- 會話級/請求級:
ActionFormBean 維持
- 持久級:模型組件(EJB/Hibernate 等)維持
核心類關係圖解
ActionServlet (Command)
├─ 创建/使用 Action、ActionForm、ActionForward
├─ 通过 struts-config.xml 配置
└─ 可扩展以添加 Command 功能
RequestProcessor
├─ 处理请求生命周期
└─ 协助 ActionServlet 完成分发
總結
Struts 以 ActionServlet 為核心控制器,Action 承載業務邏輯,ActionFormBean 橋接視圖數據,標簽庫豐富視圖表達,模型層完全開放。理解三大控制器模塊、視圖標簽分類、模型狀態分級,即掌握 Struts 架構精髓。
- 上一篇文章: Struts 2 學習指南:核心變化、標簽策略與項目實戰
- 下一篇文章: Java 堆與棧深度解析:內存模型、存取效率、String 特性與對象創建陷阱
Copyright ©
程式碼之家 All Rights Reserved