JavaWeb(十一)---過濾器(Filter)
阿新 • • 發佈:2018-12-26
過濾器(Filter)
概念:
它會在一組資源的前面執行,它可請求得到資源,也可以不讓。過濾器具有攔截請求的功能
和Servlet一樣,Filter是單例併發的。
使用方法
- 寫一個類實現Filter介面
- 在web.xml上配置
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>FORWARD</dispatcher> </filter-mapping> /---------------------------------------------------- <filter-mapping>下的<dispatcher> 設定過濾器的四種攔截方式 Data Type : string Enumerated Values : - FORWARD 轉發 - INCLUDE 包含 - REQUEST 重定向 - ERROR 錯誤 <filter-mapping>下的<url-pattern>替換成<servlet-name>表示點名攔截該Servlet
Filter生命週期
- void init(FilterConfig filterConfig)
- 建立之後,立刻馬上(Filter會在Tomcat啟動時建立)
- FilterConfig 中的方法
- getFilterName() 獲得過濾器的名字
getServletContext() 獲得ServletContext
getInitParameter(String) 獲得某個初始化引數
getInitParameterNames() 獲得所有初始化引數
- getFilterName() 獲得過濾器的名字
- void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- 每一次過濾都會執行
- FilterChain 中的doFilter(ServletRequest, ServletResponse)方法表示放行;相當於呼叫了目標Servlet的service方法,或者是執行下一個過濾器
- void destroy() 銷燬之前執行(Tomcat關閉時銷燬)