Struts 2 基於 Servlet Filter 架構,org.apache.struts2.dispatcher.FilterDispatcher(Struts 2.3.1+ 建議使用 StrutsPrepareAndExecuteFilter)負責:
<?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>
| Struts 版本 | 推薦 Filter 類 | 說明 |
|---|---|---|
| 2.0 - 2.3.0 | FilterDispatcher | 單一 Filter 處理準備與執行 |
| 2.3.1+ | StrutsPrepareAndExecuteFilter | 分離準備與執行階段,支援異步 Servlet |
| 2.5+ | StrutsPrepareAndExecuteFilter | 繼續沿用,內部優化 |
/*:攔截所有請求(含靜態資源),最常用但需注意性能/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 的包路徑(需約定插件支援)url-pattern 是否匹配請求路徑、Action 名稱是否正確struts2-core.jar 在 WEB-INF/lib/ 下web.xml 符合 Servlet 規範版本、Filter 名稱與映射一致