Struts2 本質是一個 Servlet 濾波器,攔截所有請求並委派給 Action 處理。本文梳理請求流程、核心配置文件與分包約定。
web.xml 配置的 StrutsPrepareAndExecuteFilter 攔截。struts.xml 中 <action> 的 name。class 指定的 Action 類,調用 method 指定方法(默認 execute)。<result> 的 name 匹配視圖路徑並轉發。

從官網下載 struts-2.3.30,取 lib/ 下核心 jar(commons-fileupload、commons-io、ognl、freemarker 等)。
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

src 根目錄。<!DOCTYPE struts PUBLIC ...>。
<package> 繼承 struts-default,配置 <action> 的 name、class、method 及 <result>。
ActionSupport。String,對應 <result> 的 name。| 包名 | 職責 |
|---|---|
| action | 頁面跳轉、參數接收 |
| service | 業務邏輯處理 |
| dao | 數據庫 CRUD |
| entity | 實體類 |
| util | 工具類(如 DB 連接) |
Struts2 實現了參數自動注入、結果視圖解耦、類型轉換等核心功能,是 SSH 表示層的關鍵組件。