zoukankan      html  css  js  c++  java
  • Java Web 拦截器和过滤器的区别

    一、AOP:面向切面编程,Java Web中有两个常用的技术:拦截器、过滤器

    二、拦截器

      1、定义:在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作

      2、原理:大部分时候,拦截器方法都是通过代理的方式来调用的。Struts 2的拦截器实现相对简单。当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器。Struts2拦截器是可插拔的,拦截器是AOP的一种实现。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。

      3、方法:intercept

    三、过滤器

      1、作用:在请求传递的过程中进行一些过滤操作,对一些非法字符等进行处理等。

      2、方法:doFilter

    四、拦截器、过滤器的区别

      1、拦截器是基于java的反射机制的,而过滤器是基于函数回调

      2、拦截器不依赖与servlet容器,过滤器依赖与servlet容器

      3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用

      4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问

      5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

    五、执行顺序:过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后

  • 相关阅读:
    搞定Mac Maven
    《数学之美》读书笔记
    Scalable Web Architecture and Distributed Systems
    【程序员】修炼之书
    用平常心,做非常事(字节跳动九周年张一鸣演讲)
    动态规划题目总结
    Spring Boot 启动时,让方法自动执行的 4 种方法!
    MybatisGenerator生成mapper、dao、entity
    HTTPS的GET、POST、PUT、DELETE请求
    SpringBoot使用Slf4j进行日志配置
  • 原文地址:https://www.cnblogs.com/zxguan/p/7822667.html
Copyright © 2011-2022 走看看