一.过滤器的作用的作用
过滤器是处于客户端和服务端目标资源之间的过滤技术。在客户端发送请求时,会先经过过滤器,在到servlet,响应时会根据执行流程再次反向执行过滤器。
流程图:
二.过滤器的实现
通过实现Filter接口,在diFilter方法中编写过滤逻辑
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//编写Servlet响应前的执行代码
filterChain.doFilter(servletRequest,servletResponse);//把请求传到拦截的目标资源
//编写Servlet响应后的执行代码
}
三.过滤器的配置
1.注解配置
在Java类的开头加上注解
@WebFilter("拦截路径")
2.xml配置
<filter>
<filter-name>过滤器名</filter-name>
<filter-class>过滤器类的全称</filter-class>
</filter>
<filter-mapping>
<filter-name>过滤器名(与上面相同)</filter-name>
<filter-pattern>拦截路径</filter-pattern>
</filter-mapping>
3.拦截路径
拦截路径有三种形式
(1)精确拦截,例如/index.jsp
(2)后缀拦截,只要是该后缀都拦截,例如*.jsp
(3)通配符拦截,拦截所有,例如/*,/a/*
四.过滤器链和优先级
1.过滤器链
客户端对服务器请求之后,服务器调用Servlet之前会执行一组过滤器(多个过滤器),这组过滤器就成为过滤器链。
过滤器链图:
2.过滤器优先级
(1)若是注解配置,按照类全名的字符串顺序排
(2)若是xml配置,按照filer-mapping的注册顺序从上到下
(3)xml配置优先级高于注解配置
(4)若注解和xml同时配置,会创造多个过滤器对象,多次过滤