2020年Filter&Listener課堂筆記

Filter&Listener

Filter接口:過濾器

作用:

當訪問服務器的資源時,過濾器可以將請求攔截下來,完成一些特殊的功能,如:登錄驗證、統一編碼處理、敏感詞過濾……

使用步驟:

  1. 定義一個java類,實現Filter接口
  2. 複寫方法
  3. 配置攔截路徑:通過web,xml或者@webFilter("路徑")

web.xml配置:

<filter>
   <filter-name>
       虛擬目錄
    </filter-name>
   <filter-class>
      Filter接口實現類全類名
   </filter-class>
</filter>
<filter-mapping>
	<filter-name>
        虛擬目錄
    </filter-name>
			<!-- 攔截路徑 -->
	<url-pattern>
         /*
    </url-pattern>
</filter-mapping>

過濾器的生命週期:

  1. init:執行一次,加載資源
  2. doFilter:執行多次,攔截資源後執行
  3. destroy:執行一次,釋放資源

過濾器的攔截路徑配置

攔截路徑 實例 過濾器執行的情況
具體資源路徑 /index.jsp 訪問index.jsp資源時
攔截目錄 /user/* 訪問/user下的所有資源時
後綴名攔截 *.jps 訪問所有後綴名爲.jsp資源時
攔截所有資源 /* 訪問所有資源時

過濾器的攔截方式配置(資源被訪問的方式):

  1. 註解配置:
設置dispatcherTypes屬性 功能
REQUEST 默認值。瀏覽器直接訪問請求資源
FORWARD 轉發訪問資源
INCLUDE 包含訪問資源
ERROR 錯誤跳轉資源
ASYNC 異步訪問資源
  1. web.xml配置:設置<dispatcher></dispatcher>標籤即可

過濾器鏈(配置多個過濾器):

  • 執行順序:如果有兩個過濾器,過濾器1和過濾器2
過濾器1 -> 過濾器2 -> 資源執行 ->過濾器2 -> 過濾器1
  • 過濾器先後順序問題:
    1. 註解配置:按照類名的字符串比較規則比較,值小的先執行
    2. web.xml配置:<filter-mapping>誰定義在上邊,誰先執行

Listener接口:監聽器

概念:web的三大組件之一

事件監聽機制:

  • 事件:一件事情
  • 事件源:事件發生的地方
  • 監聽器:一個對象
  • 註冊監聽:將事件、事件源、監聽器綁定在一起

ServletContextListener接口

作用:監聽ServletContext對象的創建和銷燬

方法:

常用方法 功能描述
void contextDestroyed(ServletContextEvent sce) ServletContext對象被銷燬之前會調用該方法
void contextInitialized(ServletContextEvent sce) ServletContext對象創建後會調用該方法

使用步驟:

  1. 定義一個類,實現ServletContextListener接口

  2. 複寫方法

  3. 配置:web.xml或者@WebListener

    web.xml配置:

    <listener>
    <listener-class>
    Listener接口實現類
    </listener-class>
    </listener>
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章