2015-08-26 205 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平台企业版的一部分。

相关问题