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


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无法正常过滤。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值