Struts2 web项目自写Filter无法过滤*.action地址

来源:互联网 发布:apache cxf 编辑:程序博客网 时间:2024/04/30 14:52


filter纯正的servlet过滤器,通过在web.xml配置filter-mapping达到相关规则过滤,我过滤jsp,action所以相应的写成*.jsp,*.action

<filter-mapping><filter-name>LoginFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping><filter-mapping><filter-name>LoginFilter</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping>

奇怪的是,jsp都过滤成功,偏偏action的访问过滤不了,究其原因发现,struts2也有自己的filter配置到web.xml里

<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>

经过查找,发现不能过滤*.action的原因就是上面这个struts2.的干扰,通过调整位置,将我自己写的filter放到struts2filter的上面,就能正常过滤了,个人认为*.action的访问如果先经过struts2的拦截器,就会进入其相关的处理,最后以代理的形式访问action,地址早已经发送变化,或者说变成了另外一种方式的请求,导致接下来自己写的filter无法正常过滤。

原创粉丝点击