前几天有同事写了个过滤器,希望能在过滤器中forward转向一个action,结果怎么都是404,后面才明白,因为struts的核心拦截器配置的是默认的dispatcher,也就是request dispatcher,如下:
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
对于一个没有配置过dispatcher的filter来说,他默认dispatcher为request,只拦截request请求,不会去拦截forward的请求,所以我们需要配置他的dispatcher标签值
如下:
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
至此问题就解决了。