2015-08-26 116 views
0

有幾種技術提供過濾器和攔截器或兩者兼而有之。但從我的角度來看,它幾乎是一樣的。過濾器和攔截器之間的一般區別?

讓我們看看Servlet過濾器:它們包裝執行請求,它們可以修改請求或響應。

public void doFilter(
    ServletRequest request, ServletResponse response, FilterChain chain) { 
    // do something BEFORE here ...  
    chain.doFilter(request, response); 
    // do something AFTER here ... 
} 

攔截器,例如一個從AOP聯盟,做基本相同:

class TracingInterceptor implements MethodInterceptor { 
    Object invoke(MethodInvocation i) throws Throwable { 
    // do something BEFORE here 
    Object ret=i.proceed(); 
    // do something AFTER here 
    return ret; 
    } 
} 

這裏唯一的不同是由於像方法調用與HTTP請求的技術細節。

請注意,這僅僅是例子,問題本身是技術不可知的。

有什麼區別?如果沒有真正的區別:應該選擇哪個詞,爲什麼?

回答

1

維基百科顯示,過濾器是interceptor pattern的實現:

實現這種模式的一個例子是javax.servlet.Filter的接口,這是Java平臺企業版的一部分。

相關問題