过滤器与拦截器的区别

上一篇 << 下一篇 >>>SpringMVC拦截器的用法


拦截器是AOP( Aspect-Oriented Programming)的一种实现,底层通过动态代理模式完成。
相同点--都是基于Aop实现,对方法实现增强,都可以拦截请求方法。
不同点--
a、过滤器属于servlet自己研发的,而拦截器是基于SpringMVC自己研发的
b、过滤器属于拦截web请求,而拦截器不仅可以拦截web请求(HandlerInterceptor),还可以拦截普通方法(MethodInterceptor)
c、过滤器会比拦截器先执行,拦截器封装的方法比过滤器拦截使用起来更加简单
(1)拦截器是基于java的反射机制的,而过滤器是基于函数回调。
(2)拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。
(3)过滤器只能对Controller请求起作用,而拦截器则可以对几乎所有的请求起作用。
(4)在Controller的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

过滤器应用场景:设置编码字符、过滤敏感字符
拦截器应用场景:拦截未登陆用户、审计日志


推荐阅读:
<< << << << << << << << <<<@Async注解的失效之谜
<<

你可能感兴趣的:(过滤器与拦截器的区别)