在我们日常的开发中,我们经常会用到Filter和Interceptor。有时同一个功能。Filter可以做,Interceptor也可以做。有时就需要考虑使用哪一个比较好。这篇文章主要介绍一下,二者的区别和联系。希望给大家进行选择的时候,提供一些帮助
Filter 和 Interceptor 的区别
Filter
过滤器(Filter)是在请求进入Tomcat容器之后,请求进入Servlet之前执行。Filter是Servlet规范规定的,只能用于web程序中。
Interceptor
拦截器(Interceptor)是在Servlet和Controller控制器之间执行。Interceptor是SpringframeWork中规定的。
- Interceptor是基于java的反射机制的,而Filter是基于函数回调。
- Interceptor不依赖与servlet容器,Filter依赖与servlet容器。
- Interceptor只能对action请求起作用,而Filter则可以对几乎所有的请求起作用。
- Interceptor可以访问action上下文、值栈里的对象,而Filter不能访问。
- Interceptor以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。拦截器可以获取ioc中的service bean实现业务逻辑。
什么是action请求?
Spring MVC中每个控制器中可以定义多个请求处理方法,我们把这种请求处理方法简称为Action
版权声明:本文为qq_38377774原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。