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

Struts 2 框架入門:架構原理、環境搭建、首個 Action 完整實戰

     編輯:Java 綜合教學

一、Struts 2 核心架構

Struts 2 是基於 WebWork 2 開發的 MVC 框架,核心控制器為 Filter(StrutsPrepareAndExecuteFilter),而非 Servlet,優勢在於:

  • 不依賴 Servlet API,單元測試更容易
  • 攔截器機制支援橫切關注點(驗證、日誌、事務)
  • OGNL 表達式語言簡化資料存取

二、環境搭建四步走

  1. 下載:官網 下載 struts-2.5.x-all.zip
  2. 引入 JAR:將 struts2-blank.war/WEB-INF/lib 下所有 JAR 複製至專案 WEB-INF/lib(核心:struts2-core、ognl、freemarker、javassist、commons-fileupload、commons-io、commons-lang3)
  3. 配置 struts.xml(放在 src 根目錄)
  4. 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}!

四、請求處理生命週期

  1. Tomcat 啟動 → 載入 web.xml → 實例化 Filter
  2. Filter 初始化 → 載入 struts.xml 建立 Action 映射表
  3. 用戶請求 /hello.action → 到達 Filter
  4. Filter 解析 Action 名稱 hello → 查找映射
  5. 實例化 HelloAction → 注入參數 username
  6. 調用攔截器鏈(params、validation、workflow 等)
  7. 執行 execute() → 返回結果代碼 success
  8. 根據 struts.xml 映射轉發至 /view/success.jsp
  9. 響應渲染返回瀏覽器

執行流程圖

五、常見問題:struts.xml 無提示

原因:IDE 未找到 DTD。解決:Preferences → XML → XML Catalog → Add 指定本地 struts-2.5.dtd 或線上 URL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
層級Struts 2 實現傳統對應
ModelJavaBean / POJO / Domain ObjectJavaBean
ViewJSP / FreeMarker / VelocityJSP
ControllerFilter + Action + InterceptorServlet