所见即所得-过滤器和拦截器

过滤器和拦截器

过滤器和拦截器都是基于AOP思想实现的,用于处理某个统一的功能

1 过滤器和拦截器区别

  1. 出身不同:过滤器是Java Servlet规范中的一部分,由Web容器负责管理和调用。而拦截器是Spring框架中的一部分,由Spring容器负责管理和调用。
  2. 触发时机不同:过滤器在请求进入Servlet或JSP之前被调用,并且在请求处理完成后被调用。而拦截器在请求进入Spring MVC控制器之前被调用,并且在请求处理完成后被调用。
  3. 实现不同:过滤器基于Java的Filter接口实现,需要在web.xml配置文件中进行注册。而拦截器基于Spring的HandlerInterceptor接口实现,需要在Spring配置文件中进行注册。
  4. 支持的项目类型不同:过滤器可以用于任何Java Web项目,无论是基于Servlet还是基于Spring MVC的。而拦截器主要用于基于Spring MVC的项目。
  5. 使用场景不同:过滤器通常用于处理请求的全局过滤逻辑,例如身份验证、日志记录等。而拦截器通常用于实现业务逻辑的拦截,例如权限验证、事务管理等。

2 执行顺序

请求进入容器 > 进入过滤器 > 进入 Servlet > 进入拦截器 > 执行控制器(Controller)

过滤器会先执行,然后才会执行拦截器,最后才会进入真正的要调用的方法

在这里插入图片描述

3 具体实现

1 过滤器

过滤器是基于方法回调实现的,当我们要执行下一个过滤器或下一个流程时,需要调用 FilterChain 对象的 doFilter 方法进行回调执行

在这里插入图片描述

2 拦截器

拦截器是基于动态代理(底层是反射)实现的

在这里插入图片描述

4 业务支持

1 过滤器

过滤器是 Servlet 规范中定义的,所以过滤器要依赖 Servlet 容器,它只能用在 Web 项目中

过滤器通常是用来实现通用功能过滤的,比如:敏感词过滤、字符集编码设置、响应数据压缩等功能

2 拦截器

拦截器是 Spring 中的一个组件,因此拦截器既可以用在 Web 项目中,同时还可以用在 Application 或 Swing 程序中

拦截器主要用来实现项目中的业务判断的,比如:登录判断、权限判断、日志记录、异常处理

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值