过滤器与拦截器的区别

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2021-02-24 07:18 被阅读0次

    上一篇 <<<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适配器类型汇总

    相关文章

      网友评论

        本文标题:过滤器与拦截器的区别

        本文链接:https://www.haomeiwen.com/subject/wqjuxltx.html