Filter过滤链的使用

最近学习了java web中的过滤链,感觉有很多不太理解,遂写下一些体会来加深一点印象。

第一步:建立两个Filter类实现如下

分别通过调用其init(),doFilter(),destory()方法,打印输出对应的步骤。

第二步:web.xml的配置如下

配置时,配置Filer类的顺序就是该过滤链执行的顺序,这是应该注意的是两个Filter的<url-parttern>标签内必须时同一个url,这样才能是同一个过滤链,否则它们将没多大关系。

启动tomcat服务器后打印如下:

可以看出,过滤链初始化顺序是按照web.xml文件对应的声明顺序来的。

运行index.jsp后控制台打印如下:

 可以发现过滤链中,Filter类doFilter()方法中chain.doFilter()执行前的方法和执行后的方法的顺序相反,而前面的方法是按照和过滤链初始化顺序相同的方向进行的。

根据以上总结:

当用户请求传递过来,首先根据web.xml中初始化链声明的顺序开始将请求传递给FirstFilter,FirstFilter处理放行前操作,处理完成后若可以放行将请求传给SecondFilter,同样SecondFilter处理放行前操作,处理完成后传给后续过滤器,若没有后续过滤器,则将请求交与服务器。服务器将响应的数据回传给SecondFilter中doFilter()方法中放行的后面代码来处理,符合条件直接放行给FirstFilter过滤器,firstFilter做同样的操作,若符合条件直接传给用户。其过程如下图示:

转载于:https://www.cnblogs.com/sfwy-codeland/p/7587565.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值