相同点:
都是Aop编程思想的体现,可以在程序执行前后做一些操作,如权限操作,日志记录等等。
不同点:
1.拦截器(Interceptor )是Spring定义的,过滤器(Filter)是由servlet规范定义的
2.拦截器是在请求进入容器后进行触发的,过滤器是在请求进入servlet前前后进行预处理
3.拦截器可以获取IOC容器中的各个bean,而过滤器就不行。
4.过滤器的实现基于回调函数。而拦截器(代理模式)的实行基于反射,代理分为静态代理和动态代理,动态代理是拦截器的简单实现。
那么问题来了
何时使用拦截器?何时使用过滤器?
- 如果是非spring项目,那么拦截器不能用,只能使用过滤器。
- 如果是处理controller前后,既可以使用拦截器也可以使用过滤器。
- 如果是处理dispaterServlet前后,只能使用过滤器。

过滤器和拦截器运行前后步骤:

其中,第二步,springMVC的机制是由DispaterServlet来分发请求给不同的Controller,其实这一步是在Servlet的Service()方法中执行的。
本文介绍了过滤器和拦截器的相同点与不同点。相同点是都体现Aop编程思想,可在程序执行前后做操作。不同点包括定义来源、触发时机、对IOC容器的获取能力及实现方式等。还说明了何时使用拦截器和过滤器,以及提及了它们运行前后步骤。
848

被折叠的 条评论
为什么被折叠?



