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

Struts 2 框架核心解析:MVC 架構、優缺點與實務觀點

     編輯:Java 相關知識

Struts 2 作為經典 Java Web MVC 框架,雖然在 Spring MVC 與現代前後端分離架構下逐漸淡出主流,但其設計思想與攔截器機制仍具備參考價值。本文將從核心概念、優缺點、架構定位三個維度進行系統梳理。

一、Struts 2 是什麼?

  • 輕量級 MVC 框架:代碼量少、運行資源佔用低。
  • 分層開發支援:Model(業務/資料)、View(JSP/Freemarker)、Controller(Action)職責分離。
  • 本質是一個 Servlet:FilterDispatcher(Struts 2.1.3 後為 StrutsPrepareAndExecuteFilter)攔截所有請求,委派給 Action 處理。
  • 控制器角色:在 MVC 中扮演 Controller,負責請求路由、資料封裝、視圖轉發。

二、核心優點

  1. MVC 徹底分離:開發者專注業務邏輯,視圖與控制解耦。
  2. 豐富標籤庫:UI 標籤、資料標籤、控制標籤大幅提升 JSP 開發效率。
  3. 攔截器機制:AOP 風格橫切關注點(登入驗證、日誌、事務、編碼等),可組合成攔截器堆疊。
  4. 配置驅動:struts.xml 集中管理 Action、Result、攔截器關係,修改不動代碼。
  5. 異常處理集中化:在配置映射異常類到結果頁,統一錯誤展示。
  6. 高擴展性:核心 struts-default.xml 定義預設 Bean、ResultType、攔截器堆疊,皆可覆寫或插件擴展。
  7. AOP 思想落地:攔截器即切面,細顆粒功能單元可組合復用。

三、主要缺點

  1. Action 屬性膨脹:為接收表單參數需在 Action 定義大量 getter/setter,導致類別臃腫,且屬性同時作為輸入/輸出雙向流動,易混淆。
  2. 學習曲線陡峭:攔截器堆疊、OGNL 表達式、值棧機制等概念較多。
  3. 效能較弱:值棧、OGNL 解析、大量反射調用,高併發下不如 Spring MVC + Jackson。
  4. 社區活躍度下降:新專案鮮少採用,維護舊系統為主。

四、實務建議

  • 新專案:優先選擇 Spring MVC 或 Spring Boot + RESTful API + 前端框架(Vue/React)。
  • 維護舊系統:善用攔截器提取公共邏輯,避免 Action 變成「上帝類」;配合 Convention Plugin 減少 XML 配置。
  • 遷移策略:可採用 Struts 2 + Spring 整合,逐步將業務遷移至 Spring Service,Action 退化為薄薄的轉發層,再以 Spring MVC 並行切換。

總結

Struts 2 以攔截器實現 AOP、以配置驅動 MVC 流程,曾是 Java Web 開發的標準化里程碑。理解其優缺點,不僅有助於維護存量系統,更能深化對現代框架設計權衡的認知。

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