引言
過濾器和攔截器都是Web應用中常見的概念,但兩者之間有何差別什麼時候應該使用過濾器,什麼時候應該使用攔截器,卻經常讓很多人感到茫然,其實過濾器和攔截器在某些方面的功能是類似的,所以容易讓人混淆,當然他們也有區別。
相同點
-
同樣可以攔截請求,可以進行權限驗證等操作
-
同樣都是鏈式的,一個請求可以對應多個攔截器或者過濾器
不同點
- 過濾器是web項目中的 普遍的概念,而攔截器是類似struts、springMVC這些表現層框架提供的功能
- 實現不同,過濾器一般實現Filter接口,而攔截器一般實現Interceptor接口
- 攔截器可以訪問Servlet API、ActionContext、值棧,而過濾器只能訪問Servlet API。
- 過濾器一般配置於攔截器之前
- 過濾器依賴於servlet容器,攔截器則一般不依賴於servlet容器
- 過濾器在web.xml中必須要先於servlet進行聲明