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>
如何都能攔截,那麼這兩個攔截器都會攔截一下,那麼誰是第一個攔截器呢?? 最精準比對的,就是第一個攔截器