目录
目录
知识点
Filter概述
Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。
过滤器可以把对资源的请求==拦截==下来,从而实现一些特殊的功能。
如下图所示,浏览器可以访问服务器上的所有的资源(
servlet、jsp、html等。
![](https://img-blog.csdnimg.cn/bf1c042844804d50847dad084e8b4ffb.png)
而在访问到这些资源之前可以使过滤器拦截来下,也就是说在访问资源之前会先经过
Filter,如下图
![](https://img-blog.csdnimg.cn/b131d3644b7749c6a4a2fc84bdbb6a36.png)
过滤器一般完成中文编码转换、敏感词、权限控制。
比如每个资源都要写一些代码完成某个功能,我们总不能在每个资源中写这样的代码
吧,而此时我们可以将这些代码写在过滤器中,因为请求每一个资源都要经过过滤器。
Filter 拦截路径
拦截路径表示 Filter 会对请求的哪些资源进行拦截,使用
@WebFilter
注解进行配
置。如:
@WebFilter("拦截路径")
拦截路径有如下四种配置方式:
拦截具体的资源:/hello.jsp:只有访问hello.jsp时才会被拦截
目录拦截:/user/*:访问/user下的所有资源,都会被拦截
后缀名拦截:*.jsp:访问后缀名为jsp的资源,都会被拦截
拦截所有:/*:访问所有资源,都会被拦截
过滤器链
过滤器链是指在一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。
如下图就是一个过滤器链,我们学习过滤器链主要是学习过滤器链执行的流程
![](https://img-blog.csdnimg.cn/a47c73cdac164fa5b51335bfad2e703c.png)
上图中的过滤器链执行是按照以下流程执行:
1. 执行
Filter1
的放行前逻辑代码
2. 执行
Filter1
的放行代码
3. 执行
Filter2
的放行前逻辑代码
4. 执行
Filter2
的放行代码
5. 访问到资源
6. 执行
Filter2
的放行后逻辑代码
7. 执行
Filter1
的放行后逻辑代码
以上流程串起来就像一条链子,故称之为过滤器链。