上一篇 <<<DispatcherServlet执行原理分析
下一篇 >>>SpringMVC拦截器的用法
拦截器是AOP( Aspect-Oriented Programming)的一种实现,底层通过动态代理模式完成。
相同点--都是基于Aop实现,对方法实现增强,都可以拦截请求方法。
不同点--
a、过滤器属于servlet自己研发的,而拦截器是基于SpringMVC自己研发的
b、过滤器属于拦截web请求,而拦截器不仅可以拦截web请求(HandlerInterceptor),还可以拦截普通方法(MethodInterceptor)
c、过滤器会比拦截器先执行,拦截器封装的方法比过滤器拦截使用起来更加简单
(1)拦截器是基于java的反射机制的,而过滤器是基于函数回调。
(2)拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。
(3)过滤器只能对Controller请求起作用,而拦截器则可以对几乎所有的请求起作用。
(4)在Controller的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
过滤器应用场景:设置编码字符、过滤敏感字符
拦截器应用场景:拦截未登陆用户、审计日志
推荐阅读:
<<<Spring Servlet相关知识
<<<Spring原理汇总及零碎知识点
<<<Web项目的启动方式汇总
<<<SpringMVC底层无web.xml启动原理分析
<<<SpringMVC运行流程
<<<DispatcherServlet执行原理分析
<<<SpringMVC拦截器的用法
<<<SpringMVC异步实现方式
<<<@Async注解的失效之谜
<<<SpringMVC适配器类型汇总
网友评论