Filter和Listener筆記

主要內容

  1. Filter :過濾器
  2. Listener :監聽器

Filter :過濾器

  1. 概念

    • web中的過濾器 :訪問服務器的資源時,過濾器可以將請求攔截下來,完成一些特殊的功能。
    • 過濾器的作用 :一般用於通用的操作;如登陸驗證,統一編碼處理,敏感字符過濾…
  2. 快速入門

    1. 創建一個類,實現接口Filter;是javax.servlet下的Filter
    2. 複寫方法
      1. 在方法中需要放行
    3. 配置攔截路徑
      1. web.xml配置
      2. 註解配置 @WebFilter("/*")
  3. 過濾器細節

    1. web.xml配置
            <filter>
                <filter-name>demo1</filter-name>
                <filter-class>com.web.FilterDemo1</filter-class>
            </filter>
            <filter-mapping>
                <filter-name>demo1</filter-name>
                <!--  攔截路徑      -->
                <url-pattern>/*</url-pattern>
            </filter-mapping>
  1. 過濾器執行流程
    - 放行之前
    - 是對request對象的請求消息進行增強
    - 放行之後
    - 是對response對象的響應消息進行增強
    - 響應回來後是在放行後開始執行
    3. 過濾器的生命週期
    - init :服務器啓動後,會創建Filter對象;此時執行此方法;只執行一次,一般用於加載資源
    - doFilter :每一次請求被攔截時,會執行該方法;可以執行多次
    - destroy :服務器關閉時,會銷燬Filter對象。若服務器是正常關閉,則會執行此方法,只執行一次;一般用於釋放資源
    4. 過濾器配置詳解
    - 攔截路徑的配置
    1. 具體資源路徑 :/index.jsp 只有訪問index.jsp資源時,過濾器纔會被執行
    2. 攔截目錄 : /user/* 訪問/user下的所有資源時,過濾器都會被執行
    3. 後綴名攔截 : .jsp 訪問所有後綴名爲jsp的資源時,過濾器會被執行
    4. 攔截所有資源 : /
    訪問所有資源,鍋爐其都會被執行
    - 攔截方式的配置
    - 註解配置
    * 設置dispatcherTypes屬性
    1. REQUEST: 默認值;瀏覽器直接請求資源
    2. FORWARD: 轉發訪問資源
    3. INCLUDE: 包含訪問資源
    4. ERROR: 錯誤跳轉資源
    5. ASYNC: 異步訪問資源
    - web.xml配置
    * 設置標籤即可
    5. 過濾器鏈(配置多個過濾器)
    * 執行順序 若有兩個過濾器,過濾器1和過濾器2
    * 則執行順序爲
    * 過濾器1 – 過濾器2 – 資源 – 過濾器2 – 過濾器1
    * 過濾器的先後順序問題
    1. 註解配置
    按照類名的字符串比較規則進行比較,值小的先執行
    如: Afilter 和 Bfilter,則Afilter先執行
    2. web.xml配置
    按照定義的順序執行,誰定義在前面,誰先執行

基於Filter的兩個小案例

Listener :監聽器

  • 概念 :web的三大組件之一

    • 事件監聽機制
      • 事件 :一件事情
      • 事件源 :事件發生的地方
      • 監聽器 :一個對象
      • 註冊監聽 :將事件,事件源,監聽器綁定在一起;但事件源上發生事件時,運行監聽器代碼
  • ServletContextListener :監聽ServletContext對象的創建與銷燬

    • 方法
      • void contextDestroyed(ServletContextEvent sce) :ServletContext對象被銷燬前會調用此方法
      • void contextInitialized(ServletContextEvent sce) :ServletContext對象被創建後會調用此方法
    • 步驟
      1. 定義一個類,實現ServletContextListener接口
      2. 複寫方法
      3. 配置
        1. web.xml配置
          <!-- 配置監聽器 -->
          <listener>
          <listener-class>com.web.listener.ContextLoaderListener</listener-class>
          </listener>
          <!-- 指定初始化參數 -->
          <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
          </context-param>

        2. 註解配置
          @WebListener

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