Filter
Filter:过滤器,可以在请求到达真实资源前进行拦截筛选,可以实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等
Filter是Servlet中的规范,,需要实现javax.Servlet包下的Filter接口
相关方法
init():初始化,在服务器启动时执行1次
doFilter():收到请求后执行的逻辑代码,执行N次
filterChain.doFilter(req,resp):在doFilter中表示放行
destroy:销毁,在服务器关闭时执行1次
拦截规则(不能组合使用)
注解:@WebFilter("......",dispatcherTypes = {DishpatcherType.FORWARD,DishpatcherType.REQUEST)
/*:所有请求都要经过Filter
/..... .jsp:精确匹配
/...../*:目录匹配
*.....:后缀匹配(以......结尾)
REQUEST --- 拦截浏览器请求(默认)
FORWARD --- 拦截转发请求
INCLUDE --- 拦截分发请求
ERROR --- 由于错误分发的请求
ASYNC --- 拦截异步的Servlet,搭配REQUEST一起使用,后续还要添加asyncSupported = true表示支持异步
生命周期
所有的Filter都会随着服务器的启动而创建和初始化,并调用Filter的init方法
随着服务器的关闭而销毁,调用Filter的Destory方法
同一个Filter只会被创建一次
过滤器链
多个Filter,前一个Filter使用chain.doFilter放行后会去到下一个Filter
如果是注解的方式定义的Filter,默认按照首字母排序
在xml中定义的Filter,默认按照编写顺序排序