Filter过滤器生命周期
-
构造器方法
-
init初始化方法
第1、2步在web工程创建时执行
-
doFilter过滤方法
每次拦截到请求就会执行
-
destroy销毁
停止web工程项目是执行
FilterConfig类
创建Filter时,就会创建一个FilterConfig类,这里包含了Filter配置信息
-
获取Filter的名称 filter-name的内容
filterConfig.getFilterName();
-
获取Filter中配置的init-param初始化参数
在web-xml中filter-class后面配置inin-param初始化参数,可以配置多组
<filter> <filter-name>Adminfilter</filter-name> <filter-class>com.filter.Adminfilter</filter-class> //初始化参数 <init-param> <param-name>root</param-name> <param-value>root</param-value> </init-param> </filter> <filter-mapping> <filter-name>Adminfilter</filter-name> <url-pattern>/admin/*</url-pattern> </filter-mapping>
获取初始化参数
filterConfig.getInitParameter(String);
-
获取ServletContext对象
filterConfig.getServletContext();
Filter过滤链
执行细节:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mIxd1Uy1-1611552402382)(D:\Program Files\Typora\temp\image\image-20210125131628341.png)]
执行顺序是根据web-xml中配置的filter的顺序决定的
Filter过滤器拦截路径
精准匹配
<url-pattern>/文件名.后缀名</url-pattern>
目录匹配
<url-pattern>/目录/*</url-pattern>
后缀名匹配
<url-pattern>*.后缀名</url-pattern>
后缀名匹配开头不使用斜杠
n>/目录/*
后缀名匹配
*.后缀名
后缀名匹配开头不使用斜杠
Filter过滤器只关心请求的地址是否匹配,不关心资源是否存在!!!