spring过滤器和拦截器
Spring的过滤器和拦截器有以下区别:
1. 触发时机:过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的,而拦截器则是在servlet处理完后,返回给前端之前进行处理。
2. 使用范围:过滤器是基于回调函数的,属于Servlet规范的一部分,需要依赖servlet api,而拦截器是基于反射的,可以在任何情况下使用。
3. 依赖关系:拦截器可以获取IOC容器中的各个bean,而过滤器则不能,因为拦截器是spring提供并管理的,可以调用业务逻辑,而过滤器是JavaEE标准,只需依赖servlet api,不需要依赖spring。
4. 执行方式:过滤器的执行由servlet容器回调完成,而拦截器通常通过动态代理(反射)的方式来执行。
5. 生命周期:过滤器的生命周期由servlet容器管理,而拦截器则可以通过IoC容器来管理,因此可以通过注入等方式来获取其他Bean的实例,因此使用会更方便。
6. 应用场景:过滤器可以修改request,而拦截器不能,拦截器在做安全方面用的比较多,比如终止一些流程。
总的来说,过滤器主要用于筛选出你要的东西,比如request中你要的那部分,而拦截器主要用于做安全方面,比如终止一些流程。