1. 程式人生 > >JavaWeb的三大元件之過濾器

JavaWeb的三大元件之過濾器

JavaWeb過濾器

過濾器可以讓請求得到目標資源,也可以不讓請求達到!          * 過濾器有攔截請求的能力,且過濾器是單例模式!

過濾器的實現方法:

1. 寫一個類實現Filter介面(注意匯入的是:javax.servlet.Filter介面) 2. 在web.xml中進行配置,以下為具體配置格式

  <filter>
  	<filter-name>helloFilter</filter-name>
  	<filter-class>包名.類名</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>helloFilter</filter-name>
  	<url-pattern>/要過濾的資源(/*時為過濾所有資源)</url-pattern>
  </filter-mapping>

Filter介面的方法:

              void init(FilterConfig):建立Filter後執行,在伺服器啟動時建立

                    * FilterConfig引數-->與ServletConfig相似                                * 獲取初始化引數:getInitParameter()                                * 獲取過濾器名稱:getFilterName()                                * 獲取appliction:getServletContext()               void destory():過濾器銷燬之前執行!在伺服器關閉時銷燬               void doFilter(ServletRequest,ServletResponse,FilterChain):每次過濾時都會執行,判斷是否通過過濾器

                      * FilterChain引數                                 * doFilter(ServletRequest, ServletResponse):通過當前過濾器,若有多個過濾器則到達下一過濾器。

過濾器的過濾順序:根據web.xml的<filter-mapping>的位置從上到下過濾,與過濾資源無關(即與<url-pattern>值無關)。

過濾器的四種過濾方式:需要在<filter-mapping>裡配置以下標籤,四種過濾方式可以隨意搭配使用來面對不同的情況

  <dispatcher>REQUEST</dispatcher>:過濾請求,沒有設定時的預設方式,當設定了其它過濾方式時會

                                                                  使用其它過濾方式,預設過濾方式消失。

 <dispatcher>FORWARD</dispatcher>:過濾轉發

 <dispatcher>INCLUDE</dispatcher>:過濾包含

 <dispatcher>ERROR</dispatcher>:   過濾錯誤