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

Struts 2 框架核心原理深度解析:MVC 架構、工作流程與組件詳解

     編輯:Java 綜合教學

Struts 簡介

Struts 是 Apache 軟件基金會(ASF)頂級開源項目,早期屬於 Jakarta 子項目,2004 年 3 月獨立。它基於 Java Servlet/JSP 技術,實現了 Java EE Web 應用中的 MVC 設計模式,是經典 MVC 框架的代表作。名稱 "Struts"(支柱)寓意其在 Web 應用中扮演基礎支撐角色。

發展歷程與核心價值

Struts 旨在解決早期 JSP/Servlet 開發中代碼復用性差、業務邏輯與展示邏輯耦合嚴重等問題。核心服務包括:

  • 控制器 Servlet(ActionServlet)
  • 豐富的標簽庫(HTML、Logic、Bean、Tiles 等)
  • 國際化(i18n)支持框架
  • JDBC 數據源與連接池管理
  • XML 解析工具、文件上傳下載機制

架構原理:MVC 三層在 Struts 中的映射

Struts 架構圖

視圖層

  • JSP 頁面:負責數據展示與用戶交互界面。
  • ActionForm:封裝表單數據的 JavaBean,無業務邏輯,僅提供 getter/setter,屬性與表單字段一一對應。Struts 通過它將用戶輸入傳遞給控制器。
  • Struts 標簽庫:簡化 JSP 開發,實現數據綁定、邏輯判斷、迭代等展示邏輯。

控制器層

  • ActionServlet:核心控制器,繼承 HttpServlet,重寫 doGet/doPost,接收所有請求並委派處理。
  • struts-config.xml:核心配置文件,定義請求路徑(path)到 Action 的映射、FormBean 配置、全局轉發等。

模型層

  • Action:業務控制器,不直接實現業務邏輯,而是調用 Service/DAO/EJB 等業務組件,封裝調用過程並返回 ActionForward 指定下一視圖。
  • 業務邏輯本身由 JavaBean/EJB 實現,Struts 僅負責調度。

請求處理全流程(7 步走)

工作流程圖

  1. 啟動初始化:Web 應用啟動時初始化 ActionServlet,加載 struts-config.xml,將映射關係緩存至 ActionMapping 對象。
  2. 請求攔截:用戶請求到達 ActionServlet,根據請求 URL 查找匹配的 ActionMapping;失敗返回路徑無效。
  3. 表單處理:根據映射檢查對應 ActionForm 是否存在,不存在則創建並自動填充請求參數。
  4. 驗證邏輯:若配置 validate="true",調用 ActionForm.validate();返回 ActionErrors 表示驗證失敗,轉回輸入頁;返回 null 繼續流程。
  5. Action 定位與實例化:根據 ActionMapping 找到目標 Action 類,不存在則實例化。
  6. 業務執行:調用 Action.execute(),返回 ActionForward。
  7. 視圖轉發:ActionServlet 根據 ActionForward 轉發至目標 JSP,渲染響應返回用戶。

關於 MVC 分層的爭議與實踐建議

業界對 Action 是屬於 Controller 還是 Model 存在不同見解。實踐中建議:

  • Action 作為「薄控制器」,僅負責請求分發、數據封裝、流程控制。
  • 核心業務邏輯下沉至 Service 層,Action 僅調用 Service。
  • ActionForm 純粹作為數據傳輸對象(DTO),不包含驗證邏輯(可改用獨立 Validator)。

學習框架如學駕駛,理論是地圖,實戰才是路。深入理解原理後,必須在項目中反覆練習,方能駕輕就熟。

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