1. 程式人生 > >過濾器Filter

過濾器Filter

quest std ini 對象 .com roman 基本 作用 一個

Filter快速入門

1.1、步驟:

  • 創建一個類實現Filter接口
  • 重寫接口中方法 doFilter方法是真正過濾的。
  • web.xml文件中配置

    註意:FilterdoFilter方法內如果沒有執行chain.doFilter(request,response)

    那麽資源是不會被訪問到的。

    技術分享

    技術分享

    1.2FilterChain

    FilterChain servlet 容器為開發人員提供的對象,它提供了對某一資源的已過濾請求調用鏈的視圖。過濾器使用 FilterChain 調用鏈中的下一個過濾器,如果調用的過濾器是鏈中的最後一個過濾器,則調用鏈末尾的資源。

    問題:怎樣可以形成一個Filter鏈?

    只要多個Filter對同一個資源進行攔截就可以形成Filter

    問題:怎樣確定Filter的執行順序?

    <filter-mapping>來確定

    1.3Filter生命周期

    Servlet生命周期:

    實例化 --》 初始化 --》 服務 --》 銷毀

  • 當服務器啟動,會創建Filter對象,並調用init方法,只調用一次.
  • 當訪問資源時,路徑與Filter的攔截路徑匹配,會執行Filter中的doFilter方法,這個方法是真正攔截操作的方法.
  • 當服務器關閉時,會調用Filterdestroy方法來進行銷毀操作.

    1.4

    FilterConfig

    Filterinit方法上有一個參數,類型就是FilterConfig.

    FilterConfig它是Filter的配置對象,它可以完成下列功能

  • 獲取Filtr名稱
  • 獲取Filter初始化參數
  • 獲取ServletContext對象。

    技術分享

    問題:怎樣在Filter中獲取一個FIlterConfig對象?

    技術分享

    1.5Filter配置

    基本配置

    <filter>

    <filter-name>filter名稱</filter-name>

    <filter-class>Filter

    類的包名.類名</filter-class>

    </filter>

    <filter-mapping>

    <filter-name>filter名稱</filter-name>

    <url-pattern>路徑</url-pattern>

    </filter-mapping>

    關於其它配置

    1.<url-pattern>

    完全匹配 "/demo1"開始,不包含通配符*

    目錄匹配 "/"開始 *結束

    擴展名匹配 *.xxx 不能寫成/*.xxx

    2.<servlet-name>

    它是對指定的servlet名稱的servlet進行攔截的。

    3.<dispatcher>

    可以取的值有 REQUEST FORWARD ERROR INCLUDE

    它的作用是:當以什麽方式去訪問web資源時,進行攔截操作.

    1.REQUEST 當是從瀏覽器直接訪問資源,或是重定向到某個資源時進行攔截方式配置的 它也是默認值

    2.FORWARD 它描述的是請求轉發的攔截方式配置

    3.ERROR 如果目標資源是通過聲明式異常處理機制調用時,那麽該過濾器將被調用。除此之外,過濾器不會被調用。

    4.INCLUDE 如果目標資源是通過RequestDispatcherinclude()方法訪問時,那麽該過濾器將被調用。除此之外,該過濾器不會被調用

過濾器Filter