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

Struts 2 架構概覽:核心特性、處理流程與設計模式

     編輯:Java 相關知識

Struts 2 以 WebWork 2 為核心,融合 Struts 優勢,打造輕量、可測試、高擴展的 MVC 框架。本文概覽其核心特性、請求處理流程與底層設計模式。

核心特性亮點

特性說明
無 Servlet API 依賴透過 RequestAware、SessionAware 等介面存取 HTTP 資源,Action 易於單元測試
CSS 驅動標籤庫標籤自動產生表格結構(<s:textfield> 含 <tr><td>),支援模板自訂
有狀態 Checkbox未勾選也能提交值,無需特殊判斷
靈活取消按鈕可指定不同 Action 處理取消操作
內建 AJAX 支援基於 Dojo Toolkit,提供豐富 UI 元件(如日期選擇器)
Spring 深度整合Spring 管理 Action 生命週期,依賴注入無縫套用 Hibernate/iBatis
多樣結果型別JSP、FreeMarker、Velocity、JasperReports、JFreeChart、Action 鏈、檔案下載
POJO 表單與 Action消除 ActionForm,直接用 JavaBean 接收資料;任意類別可為 Action
插件架構JAR 擴展功能,支援熱插拔,內建 JSF、JasperReports、Tiles 等
內建效能分析無需外部工具即可定位熱點
精確錯誤報告運行時錯誤定位精準
易測試 Action普通 POJO,無需 Mock Http 物件
智慧預設值絕大多數配置有合理預設,開箱即用
可定制控制器攔截器過濾 Action 前後邏輯
內建除錯支援開發期快速定位問題
模板驅動標籤FreeMarker/Velocity 模板自訂輸出,免寫 Taglib API

核心設計模式

  • Command 模式:Action 封裝請求為物件
  • 責任鏈模式:攔截器鏈處理橫切關注點

請求處理流程(官方架構圖)

Struts 2 處理流程

  1. 客戶端發起請求至 Servlet 容器(如 Tomcat)
  2. 經過過濾器鏈(含可選 ActionContextCleanUp,利於 SiteMesh 整合)
  3. FilterDispatcher 詢問 ActionMapper 判斷是否需調用 Action
  4. 是 → 委派 ActionProxy 處理
  5. ActionProxy 透過 Configuration Manager 讀取配置,尋找 Action 類
  6. 建立 ActionInvocation 實例
  7. ActionInvocation 按命名模式調用:Action 執行前後穿插攔截器
  8. Action 完成 → 根據 struts.xml 尋找 Result(通常為 JSP/FreeMarker),過程中可使用 Struts 標籤,再次涉及 ActionMapper

所有物件(Action、Result、Interceptor 等)均由 ObjectFactory 建立,支援 Spring 整合。

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