Springboot攔截器與過濾器

記錄操作日誌在項目中算是比較重要的一部分。在剛剛進行這部分代碼的編寫時,我只是簡單的把這個任務當作是一般的數據庫操作,即在每個牽涉到數據庫操作的mapping內加入相應的數據庫日誌記錄,但是這樣其實並不利於項目後期的維護。在經過了查找後,我發現攔截器可以對數據庫的請求進行攔截,可以幫助我們完成數據庫日誌的記錄操作。

攔截器

定義:攔截器是動態攔截Action調用的對象。它提供了一種機制可以使開發者可以定義在一個action執行的前後執行的代碼,也可以在一個action執行前阻止其執行,同時也提供了一種可以提取action中可重用部分的方式。在AOP中攔截器用於在某個方法或字段被訪問之前,進行攔截然後在之前或之後加入某些操作。
作用:通過構建攔截鏈,從而完成權限驗證、記錄請求信息的日誌、判斷用戶是否登錄等工作。

過濾器

定義:一個程序,它先於與之相關的servlet或JSP頁面運行在服務器上。過濾器可附加到一個或多個servlet或JSP頁面上,並且可以檢查進入這些資源的請求信息。
功能:
1)以常規的方式調用資源(即,調用servlet或JSP頁面)。
2)利用修改過的請求信息調用資源。
3)調用資源,但在發送響應到客戶機前對其進行修改。
4)阻止該資源調用,代之以轉到其他的資源,返回一個特定的狀態代碼或生成替換輸出。
3、攔截器與過濾器的區別 :
1) 攔截器是基於java的反射機制的,而過濾器是基於函數回調。
2) 攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
3) 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
4) 攔截器可以訪問action上下文、值棧裏的對象,而過濾器不能訪問。
5) 在action的生命週期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次

具體用法

過濾器:https://blog.csdn.net/u014207158/article/details/82864764
攔截器:https://www.imooc.com/article/44595
攔截器實現日誌功能:https://blog.csdn.net/qq_30737525/article/details/81532525

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