1. 程式人生 > >JAVA過濾器(Filter)與攔截器(Interceptor)區別及關係

JAVA過濾器(Filter)與攔截器(Interceptor)區別及關係

過濾器(Filter)與攔截器(Interceptor)區別:

1、過濾器是基於函式回撥,而攔截器是基於java的反射機制;

2、過濾器是servlet規範規定的,只能用於web程式中,而攔截器是在spring容器中,它不依賴servlet容器

3、過濾器可以攔截幾乎所有的請求(包含對靜態資源的請求),而攔截器只攔截action請求(不攔截靜態資源請求)

4、過濾器不能訪問action上下文及值棧裡的物件,而攔截器都是可以的。

5、攔截器可以獲取spring容器裡的物件,而過濾器是不行的

6、攔截器在action的生命週期內是可以多次呼叫,而過濾器只在容器初始化時被呼叫一次。

7、攔截器是被包裹在過濾器之中。

整個請求過程如下(此處引用 http://blog.csdn.net/chenleixing/article/details/44573495 部落格的圖片):