Filter過濾器:攔截web訪問url地址,在攔截器的訪問之前。
HandlerInterceptor:是springMVC項目中的攔截器,它攔截的目標是請求的地址Controller,比MethodInterceptor先執行。
實現一個HandlerInterceptor攔截器可以直接實現HandlerInterceptor接口,也可以繼承HandlerInterceptorAdapter類。
這兩種方法殊途同歸,其實HandlerInterceptorAdapter也就是聲明瞭HandlerInterceptor接口中所有方法的默認實現,而我們在繼承他之後只需要重寫必要的方法。
Spring AOP攔截器:只能攔截Spring管理Bean的訪問(業務層Service)
Filter與Interceptor聯繫與區別
1. 攔截器是基於java的反射機制,使用代理模式,而過濾器是基於函數回調。
2. 攔截器不依賴servlet容器,過濾器依賴於servlet容器。
3. 攔截器只能對Controller起作用,而過濾器可以對幾乎所有的請求起作用(可以保護資源)。
4. 攔截器可以訪問action上下文,堆棧裡面的對象,而過濾器不可以。
5. 執行順序:過濾前-攔截前-Controller處理-攔截後-過濾後。
![spring框架之面向切面(Spring Aop)、攔截器、過濾器的區別](http://p2.ttnews.xyz/loading.gif)
閱讀更多 JAVA熊 的文章