| 層級 | Struts 2 實現 | 傳統對應 |
| Model | JavaBean / POJO / Domain Object | JavaBean |
| View | JSP / FreeMarker / Velocity | JSP |
| Controller | Filter + Action + Interceptor | Servlet |
二、環境搭建四步走
- 下載:官網 下載
struts-2.5.x-all.zip
- 引入 JAR:將
struts2-blank.war/WEB-INF/lib 下所有 JAR 複製至專案 WEB-INF/lib(核心:struts2-core、ognl、freemarker、javassist、commons-fileupload、commons-io、commons-lang3)
- 配置 struts.xml(放在
src 根目錄)
- web.xml 註冊 Filter
struts.xml 範例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"https://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="hello" class="com.example.HelloAction" method="execute">
<result name="success">/view/success.jsp</result>
<result name="input">/view/input.jsp</result>
</action>
</package>
</struts>
web.xml 關鍵配置
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
三、首個 Action 完整流程
1. JSP 頁面
<form action="hello.action" method="post">
用戶名:<input name="username" />
<input type="submit" value="提交" />
</form>
2. Action 類
public class HelloAction extends ActionSupport {
private String username;
// getter/setter 省略
@Override
public String execute() {
if ("admin".equals(username)) return SUCCESS;
return INPUT;
}
}
3. 結果視圖
<!-- success.jsp -->
歡迎,${username}!
四、請求處理生命週期
- Tomcat 啟動 → 載入
web.xml → 實例化 Filter
- Filter 初始化 → 載入
struts.xml 建立 Action 映射表
- 用戶請求
/hello.action → 到達 Filter
- Filter 解析 Action 名稱
hello → 查找映射
- 實例化
HelloAction → 注入參數 username
- 調用攔截器鏈(params、validation、workflow 等)
- 執行
execute() → 返回結果代碼 success
- 根據
struts.xml 映射轉發至 /view/success.jsp
- 響應渲染返回瀏覽器

五、常見問題:struts.xml 無提示
原因:IDE 未找到 DTD。解決:Preferences → XML → XML Catalog → Add 指定本地 struts-2.5.dtd 或線上 URL。
- 上一篇文章: MyBatis 動態 SQL 完全指南:if/choose/trim/where/set/foreach 實戰詳解
- 下一篇文章: JDK 安裝與環境配置全平台指南(Windows / Linux / macOS)
Copyright ©
程式碼之家 All Rights Reserved