Filter过滤器小知识
Filter过滤器小知识
1、简介
服务器端程序,负责拦截请求,在进行主程序之前对请求进行相关处理
2、常见应用
session与cookie登陆、中文乱码问题、响应数据压缩等
3、配置拦截路径
(1)web.xml
<!-- 配置tomcat过滤器实现类 -->
<filter>
<!-- filter-name : 唯一,命名过滤器 -->
<filter-name>filter</filter-name>
<!-- filter-class : 过滤器实现类 -->
<filter-class>com.kunkun.filter1.HelloFilter</filter-class>
</filter>
<!-- 过滤器使用路径 -->
<filter-mapping>
<filter-name>filter</filter-name>
<!-- 拦截路径 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
(2)注解方式
@WebFilter("/*") //拦截路径
public class HelloFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException { }
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("欢迎阅读坤坤博客");
//放行,进入下一个目标(下一个过滤器或者主程序代码)
filterChain.doFilter(servletRequest,servletResponse);}
@Override
public void destroy() { }
}
4、生命周期
(1)init : 参数 FilterConfig,获取filter注册名称及初始化参数,执行一次
(2)doFilter : 拦截请求资源,执行多次
(3)destroy : 服务器关闭后,filter对象被销毁
5、拦截路径(url-pattern)
(1)全路径匹配 以 / 开始
(2)以目录匹配 以 / 开始 以 * 结束
(3)以后缀名匹配 以 * 开始 以后缀名结束
REQUEST:默认值,浏览器直接请求资源
FORWARD:拦截转发访问资源
INCLUDE:包含访问资源
ERROR:错误跳转全局错误页面
ASYNC:异步访问资源
6、过滤链
(1) 注解配置:按照类名的字符串比较规则比较,值小的先执行
如: axxxx 和 bxxxx,axxxx就先执行
(2) web.xml配置: 上下代码顺序