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

Struts 2 核心配置詳解:web.xml 中 FilterDispatcher 配置

     編輯:Java 相關知識

FilterDispatcher:框架啟動的總開關

Struts 2 基於 Servlet Filter 架構,org.apache.struts2.dispatcher.FilterDispatcher(Struts 2.3.1+ 建議使用 StrutsPrepareAndExecuteFilter)負責:

  • 初始化 Struts 2 核心組件(配置加載、容器構建)
  • 攔截所有請求,委派給 ActionInvocation 執行鏈
  • 整合 Servlet API 與 Struts 上下文

最小化配置範例

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
    xmlns="https://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://java.sun.com/xml/ns/j2ee
        https://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <filter>
        <filter-name>action2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>action2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

關鍵配置點解析

<filter-class> 版本選擇

Struts 版本推薦 Filter 類說明
2.0 - 2.3.0FilterDispatcher單一 Filter 處理準備與執行
2.3.1+StrutsPrepareAndExecuteFilter分離準備與執行階段,支援異步 Servlet
2.5+StrutsPrepareAndExecuteFilter繼續沿用,內部優化

<url-pattern> 範圍控制

  • /*:攔截所有請求(含靜態資源),最常用但需注意性能
  • /app/*:僅攔截特定前綴,需配合 struts.action.prefix 配置
  • *.action:僅攔截 .action 後綴,傳統風格

進階配置:初始化參數

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>struts.xml,struts-plugin.xml</param-value>
    </init-param>
    <init-param>
        <param-name>actionPackages</param-name>
        <param-value>com.example.actions</param-value>
    </init-param>
</filter>
  • config:指定加載的配置文件列表(默認 struts.xml)
  • actionPackages:掃描註解式 Action 的包路徑(需約定插件支援)

常見問題排查

  • 404 錯誤:檢查 url-pattern 是否匹配請求路徑、Action 名稱是否正確
  • ClassNotFoundException:確認 struts2-core.jar 在 WEB-INF/lib/ 下
  • 配置不生效:確保 web.xml 符合 Servlet 規範版本、Filter 名稱與映射一致
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved