💕可以直接食用最后结果💕
在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方法来实现各种中间件功能,如日志记录、权限控制、请求处理时间监控等,为开发者提供了一个灵活的方式来插入自定义的请求前后处理逻辑。