1.拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。
2.拦截器基于反射机制,而过滤器基于函数回调。
3.拦截器只能对controller层的请求进行拦截(action请求),而无法对例如直接请求静态变量的请求进行拦截。而过滤器可以过滤任何请求。
4.拦截器可以取到spring管理的各个bean(即可以取到@autowrite的实例),因此可以再拦截器中对业务进行操作。而过滤器不行,因为tomcat初始化的过程是监听器->过滤器->servlet,所以过滤器无法获得spring注入的类,除非spring注入的类在过滤器之前初始化。(这点也是最重点的区别)