过滤器和拦截器的区别


1. 触发时机不同

  过滤器:过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的,请求结束返回也是,是在servlet处理完后,返回给前端之前。

  拦截器:拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过滤器是JavaEE标准,只需依赖servlet api ,不需要依赖spring

2. 实现方式不同

  过滤器:基于回调函数,由Servlet容器回调完成。Filter是依赖于Servlet容器,属于Servlet规范的一部分,生命周期由Servlet容器管理。

  拦截器:基于反射,常通过动态代理(反射)的方式来执行。拦截器则可以通过IoC容器来管理,因此可以通过注入等方式来获取其他Bean的实例,因此使用会更方便。

3. 获取资源的区别

  过滤器(Filter) :可以拿到原始的http请求,但是拿不到你请求的控制器和请求控制器中的方法的信息。

  拦截器(Interceptor):可以拿到你请求的控制器和方法,却拿不到请求方法的参数。

  切片(Aspect): 可以拿到方法的参数,但是却拿不到http请求和响应的对象

文章参考网址:https://zhuanlan.zhihu.com/p/340397290


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM