请求过程:
容器 -> Filter -> Servlet -> Inteceptor -> Controller
- 过滤器是在进入容器后处理,拦截器是在进行servlet之后处理
- 过滤器的实现基于回调函数。而拦截器(代理模式)的实现基于反射
- 过滤器可以修改request,而拦截器不能
- 过滤器由Servlet容器管理,拦截器由IOC容器管理(因此拦截器可以使用别的Bean实例)
- 过滤器能拿到原始http请求,但拿不到请求的控制器信息
- 拦截器能拿到请求的控制器信息,但拿不到请求方法的参数
总结:过滤器主要用于筛选出request中的一些信息,拦截器多用于做安全方面。