Filter基础
- 概念:过滤器,JavaWeb三大组件(Servlet、Filter、Listener)之一
- 功能:可以拦截对资源的请求,完成一些通用的操作,比如权限控制、统一编码处理等
使用方法
- 定义类,实现Filter接口,重写方法
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override
public void destroy() {
Filter.super.destroy();
}
}
- 在类上定义@WebFilter注解配置拦截资源的路径
@WebFilter("/*")
或在web.xml文件配置
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.test.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 在doFilter中拦截放行
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest, servletResponse);
}
Filter拦截路径配置
- 拦截具体资源:/index.jsp
- 目录拦截:/user/*
- 后缀名拦截:*.jsp
- 拦截所有:/*
Filter执行流程
浏览器请求–>Filter–>执行放行前逻辑–>Web资源–>Filter–>执行放行后逻辑–>浏览器响应
Filter链
一个Web应用,配置多个Filter,就称为Filter链
Filter链的执行顺序按照Filter类名的自然语言顺序执行,如:AFilter–>Filter1–>Filter2