servlet-->拦截器中的preHandle和postHandle有什么区别?分别有什么作用?

💕可以直接食用最后结果💕

在Spring框架中,拦截器(Interceptor)是基于Java的Web应用程序中用于拦截请求并执行处理前后逻辑的组件。拦截器可以实现HandlerInterceptor接口,该接口定义了三个方法:preHandle(), postHandle(), 和afterCompletion()。preHandle和postHandle是这三个方法中的前两个,它们的区别和作用如下:

preHandle方法

时机:preHandle()方法在请求处理之前被调用,即在Controller方法(请求处理器)调用之前执行。

作用

权限检查:可以用来进行用户授权认证,比如检查用户是否登录,是否有权访问某个资源等。

日志记录:记录请求信息,用于监控或日志记录。

资源准备:在请求处理前预处理数据。

返回值:

返回true则继续流程(如调用下一个拦截器或处理器)。

返回false则流程中断,Spring将不会调用后续的拦截器或处理器。这时可以通过响应直接输出到客户端。

postHandle方法

时机:postHandle()方法在请求处理后、分发视图前被调用,即在Controller方法调用之后,渲染视图之前执行。

作用

数据处理:可以对请求域中的模型和视图进行调整,比如添加额外的模型数据,选择不同的视图等。

性能监控:可以在视图渲染前完成一些资源的清理,或者记录处理请求所需的时间。

参数

该方法带有ModelAndView参数,允许访问和修改Controller处理后的模型和视图。

反正总而言之~:

preHandle 主要用于请求前的准备工作,权限校验或日志记录等,决定是否继续后续的处理流程。

postHandle 主要用于请求后的处理,但在视图被渲染前,可以操作控制器返回的ModelAndView对象。

在实际应用中,拦截器可以根据需要使用preHandle和postHandle方法来实现各种中间件功能,如日志记录、权限控制、请求处理时间监控等,为开发者提供了一个灵活的方式来插入自定义的请求前后处理逻辑。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值