拦截器与过滤器的区别
1.拦截器和过滤器触发时机不一样,过滤器是请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。
2.拦截器可以获取IOC容器中各个bean的信息,贰过滤器就不行,因为拦截器是spring提供并且管理的,Spring的功能可以被拦截器使用,在拦截器中注入一个service,可以调用业务逻辑。而过滤器是javaEE的标准,只需要依赖servlet api,不需要依赖spring
过滤器拦截器运行先后步骤:
,SpringMVC的机制是由DispaterServlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的.
3、过滤器的实现基于回调函数。而拦截器(代理模式)的实现基于反射,代理分静态代理和动态代理,动态代理是拦截器的简单实现。
何时使用拦截器?何时使用过滤器?
如果是非spring项目,那么拦截器不能用,只能使用过滤器。
如果是处理controller前后,既可以使用拦截器也可以使用过滤器。
如果是处理dispaterServlet前后,只能使用过滤器。