1.概念
- web中的過濾器:當訪問服務器資源時,過濾器能夠將請求攔截下來,完成一些特殊的功能
- 過濾器的做用:
- 通常用於完成通用的操做,如:登陸驗證,統一編碼處理,敏感字符過濾
2.快速入門
1.步驟
- 定義一個類,實現接口filter
- 複寫方法
- 配置攔截路徑
- web.xml
- 註解
3.過濾器細節
1.web.xml配置
<filter>
<filter-name>demo1</filter-name>
<filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
</filter>
<filter-mapping>
<filter-name>demo1</filter-name>
<攔截路徑>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.過濾器執行流程
- 執行過濾器
- 執行放行後的資源
- 回來執行過濾器放行代碼下邊的代碼
3.過濾器生命週期方法
- destroy在服務器關閉後,Filter對象被銷燬,若是服務器是正常關閉,則會執行destroy方法
- doFilter每一次請求被攔截時執行,執行屢次
- init在服務器啓動後,會建立Filter對象,而後調用init方法,只執行一次,用於加載資源
4.過濾器配置詳解
- 攔截路徑配置:
- 具體資源路徑 /index.jsp 只有訪問index.jsp資源時,過濾器纔會被訪問
- 攔截目錄 /user/* 訪問/user下的全部資源時,過濾器都會被執行
- 後綴名攔截 *.jsp/ 訪問全部後綴名爲jsp資源時,過濾器都會被執行
- 攔截全部資源 /* 訪問全部資源時,過濾器都會被執行
- 攔截方式配置:資源被訪問的方式
- 註解配置:
- 設置dispatcherTypes屬性
- REQUEST:默認值,瀏覽器請求資源
- FORWARD:轉發訪問資源
- INCLUDE:包含訪問資源
- ERROR:錯誤跳轉資源
- ASYNC:異步訪問資源
- web.xml配置
- 設置dispatcherTypes = {...}便可
5.過濾器鏈(配置多個服務器)
- 執行順序 過濾器1 過濾器2 執行資源 過濾器2 過濾器1
- 過濾器前後順序問題
- 註解配置:按照類名的字符串比較規則比較,值小的先執行
- web.xml配置:
誰定義在上邊,誰先執行
- 加強對象的功能
- 設計模式:一些通用的解決固定問題的方式
- 裝飾模式
- 代理模式
- 概念
- 真實對象:被代理的對象
- 代理對象
- 代理模式:代理對象代理真實對象,達到加強真實對象功能的目的
- 實現方式
- 靜態代理
- 動態代理
- 實現步驟
- 代理對象和真實對象實現相同的接口
- 代理對象=Proxy.newProxyInstance();
- 使用代理對象調用方法
- 加強方法
- 加強方式
- 加強參數列表
- 加強返回值類型
- 加強方法體執行邏輯
Listener:監聽器
- 概念:web的三大組件之一
- 事件監聽機制
- 事件:一件事情
- 事件源:事件發生的地方
- 監聽器:一個對象
- 註冊監聽:將事件,事件源,監聽器綁定在一塊兒,當事件源上發生某個事情後,執行監聽器代碼
- ServletContextListener:監聽ServletContext對象的建立和銷燬
- void contextDestroyed(ServletContextEvent sce) :ServletContext對象被銷燬以前會調用該方法
- void contextInitialized(ServletContextEvent sce) :ServletContext對象被建立以前會調用該方法