Spring AOP、攔截器、過濾器的區別

一:區別與概念
     Filter過濾器:攔截web訪問url地址。
     Interceptor攔截器:攔截以 .action結尾的url,攔截Action的訪問  (控制層Controller)。
      Spring AOP攔截器:只能攔截Spring管理Bean的訪問(業務層Service)。

     概念:
     Spring AOP:
     Spring AOP,是AOP的一種實現,使用的是代理模式。
     Filter:
     Filter(過濾器)是J2EE的規範,Servlet2.3開始引入/實現的是職責鏈模式。Filter可以用來設置字符集控制權限、控制轉向等等。Filter也是AOP的一種實現。
     Interceptor:
     Interceptor (攔截器),是Spring MVC中的概念。同樣是AOP的一種實現。

 

二:Filter與Interceptor聯繫與區別

  1. 攔截器是基於java的反射機制,使用代理模式,而過濾器是基於函數回調。
  2. 攔截器不依賴servlet容器,過濾器依賴於servlet容器。
  3. 攔截器只能對action起作用,而過濾器可以對幾乎所有的請求起作用(可以保護資源)。
  4. 攔截器可以訪問action上下文,堆棧裏面的對象,而過濾器不可以。
  5. 執行順序:過濾前---攔截前---Action處理---攔截後---過濾後。

三:攔截器和過濾器的區別
      1、攔截器是基於Java的反射機制,過濾器是基於java的函數回調
      2、攔截器不依賴於servlet容器,而過濾器依賴於servlet容器
      3、攔截器只能對action請求起作用,過濾器幾乎對所有的請求起作用
      4、攔截器可以訪問action上下文,值棧裏的對象,而過濾器不能訪問
     5、在action生命週期中,攔截器可以被多次調用,過濾器只能在servlet容器初始化時調用一次
     6、攔截器可以獲取IOC容器中的各個bean,過濾器不行,在攔截器中注入一個service可以調用邏輯業務

 

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