image.png

总结

  1. 实现原理不同
  2. 使用范围不同
  3. 触发时机不同
  4. 拦截的请求范围不同
  5. 注入Bean情况不同
  6. 控制执行顺序不同

对比

过滤器,拦截器拦截的是URL。AOP拦截的是类的元数据(包、类、方法名、参数等)。

过滤器并没有定义业务用于执行逻辑前、后等,仅仅是请求到达就执行。 拦截器有三个方法,相对于过滤器更加细致,有被拦截逻辑执行前、后等。 AOP针对具体的代码,能够实现更加复杂的业务逻辑。

三者功能类似,但各有优势,从过滤器--拦截器--》切面,拦截规则越来越细致。 执行顺序依次是过滤器、拦截器、切面。

场景

拦截器可以用于实现各种功能,如身份验证、请求参数校验、权限控制等。 使用场景方面,

过滤器适用于对Web应用程序中所有请求和响应进行处理的情况,如字符编码转换、日志记录、安全控制等。

拦截器适用于对特定请求或响应进行处理的情况,如身份验证、请求参数校验、权限控制等。

过滤器 (Filter)

过滤器的配置比较简单,直接实现Filter 接口即可,也可以通过@WebFilter注解实现对特定URL拦截,看到Filter 接口中定义了三个方法。