JavaWeb學習筆記——過濾器Filter

1.filter的簡介
  filter是對客戶端訪問資源的過濾,符合條件放行,不符合條件不放行,並且可以對目 標資源訪問前後進行邏輯處理
2.快速入門
 步驟:
  1)編寫一個過濾器的類實現Filter接口
  2)實現接口中尚未實現的方法(着重實現doFilter方法)
  3)在web.xml中進行配置(主要是配置要對哪些資源進行過濾)

3.Filter的API詳解
  (1)filter生命週期及其與生命週期相關的方法
  Filter接口有三個方法,並且這個三個都是與Filter的生命相關的方法
    init(Filterconfig):代表filter對象初始化方法 filter對象創建時執行
    doFilter(ServletRequest,ServletResponse,FilterCha):代表filter執行過濾的核心方法,如果某資源在已經被配置到這個filter進行過濾的話,那麼每次訪問這個資源都會執行doFilter方法,對象FilterCha的doFilter(ServletRequest,ServletResponse)方法把請求傳到後面的資源中(可以是Filter也可以是Servlet)。
    destory():代表是filter銷燬方法 當filter對象銷燬時執行該方法

Filter對象的生命週期:
  Filter何時創建:服務器啓動時就創建該filter對象
  Filter何時銷燬:服務器關閉時filter銷燬

(2)Filter的AP詳解
   1)init(FilterConfig)
    其中參數config代表 該Filter對象的配置信息的對象,內部封裝是該filter的配置信息。
   2)destory()方法
    filter對象銷燬時執行
   3)doFilter方法
    doFilter(ServletRequest,ServletResponse,FilterChain)
   其中的參數:
    ServletRequest/ServletResponse:每次在執行doFilter方法時 web容器負責創建一個request和一個response對象作爲doFilter的參數傳遞進來。該request個該response就是在訪問目標資源的service方法時的request和response。
    FilterChain:過濾器鏈對象,通過該對象的doFilter方法可以放行該請求

4.Filter的配置

 <filter>
    <filter-name>QuickFilter2</filter-name>
    <filter-class>cn.zsl.web.filter.QuickFilter2</filter-class>
  </filter>
  <filter>
  	<filter-name>loginFilter</filter-name>
  	<filter-class>cn.zsl.web.filter.LoginFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>QuickFilter2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
  	<filter-name>loginFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

url-pattern配置時
  1)完全匹配 /sertvle1
  2)目錄匹配 /aaa/bbb/* ----最多的
        /user/:訪問前臺的資源進入此過濾器
        /admin/
:訪問後臺的資源時執行此過濾器
  3)擴展名匹配 *.abc *.jsp
  注意:url-pattern可以使用servlet-name替代,也可以混用
<filter-mapping>纔是註冊攔截器,因此<filter-mapping>會影響攔截器的先後順序。

dispatcher:訪問的方式(瞭解)
  REQUEST:默認值,代表直接訪問某個資源時執行filter
  FORWARD:轉發時才執行filter
  INCLUDE: 包含資源時執行filter
  ERROR:發生錯誤時 進行跳轉是執行filter

5.總結Filter的作用?
  1)公共代碼的提取
  2)可以對request和response中的方法進行增強(裝飾者模式/動態代理)
  3)進行權限控制

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章