概述
Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
使用
1 实现Filter接口
1
| public class test implements Filter
|
2 重写接口中的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import javax.servlet.*; import java.io.IOException;
public class test implements Filter {
@Override public void init(FilterConfig filterConfig) throws ServletException {
}
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override public void destroy() {
} }
|
3 配置拦截路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;
@WebFilter("/*") public class test implements Filter {
@Override public void init(FilterConfig filterConfig) throws ServletException {
}
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override public void destroy() {
} }
|
Filter拦截路径配置
和Servlet基本一致。
1拦截具体的资源
1
| @WebFilter("/idnex.jsp")
|
只有访问index.jsp时就会被拦截
2 目录拦截
访问/user下的所有资源,都会被拦截
3 后缀名拦截
访问后缀名为jsp的资源,都会被拦截
和Servlet一样也不能加上斜杠
4 拦截所有
访问所有资源,都会被拦截
过滤链
1 概述
过滤器链是指在一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。
![]()
上图中的过滤器链执行是按照以下流程执行:
- 执行
Filter1
的放行前逻辑代码
- 执行
Filter1
的放行代码
- 执行
Filter2
的放行前逻辑代码
- 执行
Filter2
的放行代码
- 访问到资源
- 执行
Filter2
的放行后逻辑代码
- 执行
Filter1
的放行后逻辑代码
以上流程串起来就像一条链子,故称之为过滤器链。
2 执行顺序
我们现在使用的是注解配置Filter,而这种配置方式的优先级是按照过滤器类名(字符串)的自然排序。
比如有如下两个名称的过滤器 : BFilterDemo
和 AFilterDemo
。那一定是 AFilterDemo
过滤器先执行。
如果有什么,可以通过下面的邮箱和我联系!!!
![img]()