1、Filter简介以及作用
1、Filter是JavaWeb的三大web组件之一Servlet、Filter、Listener。
2、Filter的作用是在请求到达WEB资源(HTML、CSS、Servlet、JSP)之前进行拦截。
3、Filter需要交给Tomcat访问器来管理。
4、Filter的作用:
1.Filter可以在请求到达目标资源之前进行拦截
2.Filter也可以放行请求
3.Filter可以在响应到达浏览器之前做一个预处理
2、Filter的三个方法
1、init()
init()方法用来初始化过滤器。
调用代码为:
2、doFilter()
一次拦截请求时都会调用。
参数
ServletRequest request
> 请求报文
ServletResponse response
> 响应报文
FilterChain chain
> 该对象的作用就是放行请求:
可以通过 chain.doFilter(request,response) 放行请求。
当调用chain.doFilter()就相当于调用目标的资源的service方法。
3、 destroy()
destroy()方法在项目停止时调用,用来在对象被销毁前做一些收尾工作。
3、多个Filter的拦截顺序
<filter-mapping>
<filter-name>CharacterEncodingFilter1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncodingFilter2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
拦截路径一样,拦截器的顺序,就看web.xml的配置顺序,从上到下依次
<filter-mapping>
<filter-name>CharacterEncodingFilter3</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncodingFilter4</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
如何都能拦截,那么这两个拦截器都会拦截一下,那么谁是第一个拦截器呢?? 最精准匹配的,就是第一个拦截器