應用場景
1、日志記錄:記錄請求資訊的日志,以便進行資訊監控、資訊統計、計算PV(Page View)等。
2、權限檢查:如登入檢測,進入處理器檢測檢測是否登入,如果沒有直接傳回到登入頁面;
3、性能監控:有時候系統在某段時間莫名其妙的慢,可以通過攔截器在進入處理器之前記錄開始時間,在處理完後記錄結束時間,進而得到該請求的處理時間(如果有反向代理,如apache可以自動記錄);
4、通用行為:讀取cookie得到使用者資訊并将使用者對象放入請求,進而友善後續流程使用,還有如提取Locale、Theme資訊等,隻要是多個處理器都需要的即可使用攔截器實作。
5、OpenSessionInView:如hibernate,在進入處理器打開Session,在完成後關閉Session。
Interceptor
基于java的反射機制的;
不依賴于servlet容器;
隻能對action請求起作用;
可以通路action上下文、值棧裡的對象;
在action的生命周期中,攔截器可以多次被調用;
能夠深入到方法前後、異常抛出前後
filter
基于函數回調。
依賴于servlet容器。
可以對幾乎所有的請求起作用
隻在容器初始化時被調用一次。
針對URL位址做一個編碼的事情、過濾掉沒用的參數、安全校驗(比較泛的,比如登入不登入之類);
隻在Servlet前後起作用;