拦截器(Interceptor)和过滤器(Filter)的区别

1. 过滤器在一个request进入servlet之前,处理request内容。在response返回客户端之前,处理response内容。而拦截器是

无法操作request、response的内容的

2. 过滤器只在request进入servlet 前后进行处理,而拦截器精确到方法,典型的AOP(面向切面编程)。

3. 过滤器是JavaEE标准,所以过滤器值能在servlet容器(例如Tomcat)中实现,而拦截器可以用于JavaEE,JavaSE中。

4. 过滤器可以对所有请求起作用,而拦截器只能对action起作用。

5. 过滤器无法访问action上下文、值栈里的对象,而拦截器可以。

6. 在action生命周期里面,过滤器只在容器初始化时被调用一次,而拦截器可以被多次调用。

综上:过滤器更多的是用来做权限校验,编码统一修改等。而拦截器适合于日志等。
 

拦截器(Interceptor)和过滤器(Filter)的区别