1、使用范围不同
过滤器(Filter): 实现的是 javax.servlet.Filter 接口,而这个接口是在 Servlet 规范中定义的,也就是说过滤器 Filter 的使用要依赖于 Tomcat 等外部容器,Filter 只能在 web 程序中使用
拦截器(Interceptor): 它是一个 Spring 组件,并由 Spring 容器管理,并不依赖 Tomcat 等容器,是可以单独使用的。不仅能应用在 web 程序中,也可以用于 Application 等程序中
2、过滤器 和 拦截器的触发时机也不同,看下边这张图
1) 过滤器Filter,是在请求进入容器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后
2) 拦截器Interceptor,是在请求进入servlet后,在进入Controller之前进行预处理的,Controller中渲染了对应的视图之后请求结束