JavaWeb之Listener&Filter
1. 回顧一下三個作用域
啟動tomcat時會建立ServletContext,關閉伺服器,將專案從伺服器中移除會銷燬ServletContext
請求專案中的任何資源都會建立ServletRequest,請求結束,銷燬ServletRequest
請求專案中的JSP資源會建立HttpSession,Session過期,伺服器正常或非正常退出都會銷燬HttpSession
2. Listener
監聽器,監聽某個事件的發生或狀態改變
監聽器的內部機制就是介面回撥
-
WEB監聽器
總共有8個,劃分為三種類型
-
監聽三個作用域的建立和銷燬
ServletContextListener 利用它,在建立ServletContext的時候,完成初始化操作,執行任務排程
ServletRequestListener 利用它,監聽ServletRequest的建立和銷燬
HttpSessionListener 利用它,統計線上人數
-
監聽三個作用域的屬性狀態變更
可以監聽作用域中值新增|替換|移除操作
ServletContextAttributeListener
ServletRequestAttributeListener
HttpSessionAttributeListener
-
監聽HttpSession儲存值的狀態變更
這類監聽器不用註冊
HttpSessionBindingListener JavaBean實現該介面即可監聽,監聽物件在HttpSession中的繫結和移除
3. Filter
過濾器,就是對客戶端傳送的資料進行過濾,其實就是起到了攔截器的作用
可以對一些敏感詞彙進行過濾
統一設定編碼型別
自動登入
...
-
如何使用過濾器?
定義一個類,實現Filter介面 註冊過濾器 <filter> <filter-name>FilterDemo</filter-name> <filter-class>com.kernel.filter.FilterDemo</filter-class> </filter> <filter-mapping> <filter-name>FilterDemo</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
-
Filter生命週期
在伺服器啟動時,建立Filter,當伺服器停止,Filter銷燬
-
Filter執行順序
客戶端發出請求,經過過濾器,過濾器通過chain.doFilter()方法放行後,才能到達Servlet,如果有多個過濾器,按照註冊的順序,一次經過每個過濾器,只有所有過濾器放行後,才會到達Servlet
-
dispatcher
REQUEST 攔截所有請求
FOWORD 攔截所有轉發
ERROR 攔截頁面出錯
INCLUDE 攔截包含頁面