1、过滤器(Filter)可以对几乎所有的请求都能起作用,包括css,js等资源文件;拦截器(Interceptor)只对action请求起作用,即对外访问路径。
2、触发机制不同。过滤器是在请求进入容器后,进入servlet之前进行预处理。请求返回也是,是在servlet处理完后,返回给前端之前。
3、过滤器的实现基于函数回调;而拦截器基于java的反射机制。
4、过滤器依赖于servlet容器,属于servlet规范的一部分;而拦截器不依赖于servlet容器,是独立存在的,可以在任何情况下使用。
5、拦截器可以获取IOC容器中的各个bean,而过滤器不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑;而过滤器是JavaEE标准,只需依赖Servlet api,不需要依赖spring。