Filter过滤器
作者:互联网
1、过滤器三要素
- 拦截:一个请求必须先把它拦住,才能做后续处理
- 过滤:预设的检查条件,满足条件才可以放行
- 放行:对于满足要求的请求,放它过去,让它原本要访问什么资源就继续还是访问那个资源
2、过滤器生命周期
生命周期环节 | 调用的方法 | 时机 | 次数 |
---|---|---|---|
创建对象 | 无参构造器 | 默认:Web应用启动时 | 一次 |
初始化 | init(FilterConfig filterConfig) | 创建对象后 | 一次 |
处理请求 | doFilter(ServletRequest request, ServletResponse response, FilterChain chain) |
接收到请求后 | 多次 |
清理操作 | destroy() | Web应用卸载之前 | 一次 |
3、拦截请求时的匹配规则
- 精确匹配
<!-- 配置Filter要拦截的目标资源 --> <filter-mapping> <!-- 指定这个mapping对应的Filter名称 --> <filter-name>Target01Filter</filter-name> <!-- 通过请求地址模式来设置要拦截的资源 --> <url-pattern>/Target01Servlet</url-pattern> </filter-mapping>
- 模糊匹配★
- 前杠后星:/user/*
<filter-mapping> <filter-name>Target02Filter</filter-name> <!-- 模糊匹配:前杠后星 --> <!-- /user/Target02Servlet /user/Target03Servlet /user/Target04Servlet --> <url-pattern>/user/*</url-pattern> </filter-mapping>
- 前星后缀:*.html
<filter> <filter-name>Target04Filter</filter-name> <filter-class>com.atguigu.filter.filter.Target04Filter</filter-class> </filter> <filter-mapping> <filter-name>Target04Filter</filter-name> <url-pattern>*.png</url-pattern> </filter-mapping>
- 前杠后星:/user/*
- 根据Servlet名称匹配
4、Filter链
- 概念:拦截同一资源的多个Filter
- 执行顺序:由web.xml中filter-mapping配置的顺序决定
- chain.doFilter(requset,response):将请求放行到Filter链中的一下一个Filter,如果当前Filter已经是最后一个了,那么直接放行这个请求去访问原本要访问的资源
标签:filter,匹配,请求,Filter,放行,过滤器,Target04Filter 来源: https://www.cnblogs.com/ai377377/p/16269620.html