一、Filter简介

1.概念

        Filter:过滤器,是一个接口,是JavaWeb三大组件(Servlet、Filter、Listener)之一。

2.作用

        过滤器Filter可以把对资源的请求拦截下来,从而实现一些通用的操作,如:权限控制、统一编码处理、敏感字符处理等。

二、Filter的使用

1.定义实现类

        定义Filter的实现类,并重写方法;
【注意】实现Filter接口导包时,导的是javax.servlet.*。

2.配置拦截路径(★)

        在实现类上方@WebFilter注解来配置要拦截资源的路径

3.放行

        对资源进行处理后,放行(doFilter())资源。

【tips】Filter的执行流程:放行后访问对应的资源,访问完资源后回到Filter,执行放行后的逻辑代码,即:放行前代码→放行→访问被拦截的资源(别光拦截不放行)→放行后代码。所以一般在放行前对请求数据进行处理,放行后对响应数据进行处理
                        

三、Filter拦截路径配置和过滤器链

1.拦截路径配置

(1)拦截具体资源:/index.jsp:只有访问index.jsp时才会被拦截;
(2)目录拦截:/user/*:访问/user目录下的所有资源时,都会被拦截;
(3)后缀名拦截:*.jsp:访问所有后缀为jsp的资源时,都会被拦截;
【注意】后缀名拦截不以/开头。
(4)拦截所有:/*:访问所有资源时,都会被拦截。

2.过滤器链

        一个Web应用中可以配置多个过滤器,这多个过滤器称为过滤器链。
(1)过滤器链的执行流程
        
(2)过滤器链中多个过滤器的执行顺序
        注解配置的Filter的执行顺序,按照实现类类名的自然排序顺序来执行。