攔截器 |
過濾器 |
|
實現 |
java反射 |
函數回調 |
規範 |
spring框架 |
servlet規範 |
依賴 |
不依賴servlet容器 ,依賴於web框架(比如springMVC) |
依賴servlet容器 |
作用範圍 |
action請求,spring中是contgroller |
幾乎所有請求起作用(除了web程序,也可以用於Application,Swing) |
使用spring資源(訪問上下文,值棧裏的對象,獲取IOC容器中的各個bean) |
可以 |
不可以 |
在action的生命週期中,調用次數 |
可以多次 |
只能在容器初始化時調用一次(注意:有時候我們的項目看起來可能調用一次請求,但實際過濾多次,是因爲非動、靜態資源分離的項目,請求又附帶的靜態資源,導致過濾器觸發多次) |
觸發時機 |
請求進入servlet後,但請求進入controller之前。 請求結束返回,是在controller處理完後,返回給servlet之前。 |
請求進入容器後,但請求進入servlet之前。 請求結束返回,是在servlet處理完後,返回給前端之前。 |
傳參 |
HttpServletRequest/Response |
ServletRequest/Response |
參考文章:
攔截器和過濾器的區別 - THISISPAN - 博客園 https://www.cnblogs.com/panxuejun/p/7715917.html