Filter过滤链的使用

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做同样的操作,若符合条件直接传给用户。其过程如下图示:

猜你喜欢

转载自blog.csdn.net/f45056231p/article/details/81226278
今日推荐