###SmallArticleTitle###
来源:blog.csdn.net; 编辑:xjh; 2025-03-12
HandlerInterceptor 是 Spring MVC 框架中的一个接口,主要用于在处理 HTTP 请求的不同阶段进行拦截和处理。它类似于 Servlet 过滤器,但作用范围更加精细,可以在请求到达控制器之前、请求处理之后以及视图渲染之前进行拦截。
一、HandlerInterceptor 主要有三个方法
preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
在请求被处理之前调用。通常用于做一些前置的处理逻辑,比如身份验证、权限检查或记录日志等。如果返回 true,则请求继续向下执行。如果返回 false,则中止请求的后续处理。
postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
在请求处理完后、视图渲染之前调用。可以在这里修改 ModelAndView,对返回的视图或数据进行进一步的调整。适用于添加一些通用的模型数据或者修改返回的视图等。
afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
在视图渲染完成之后调用。通常用于进行资源清理、日志记录等操作。不管请求是否发生异常,这个方法都会执行,因此特别适合用于做最终的清理工作。
二、常见使用场景
权限验证:可以在 preHandle 中拦截未经授权的请求。
性能监控:在 preHandle 中记录请求的开始时间,在 afterCompletion 中计算总耗时。
日志记录:记录请求的详细信息,如访问的 URL、请求参数、响应状态等。
要使用 HandlerInterceptor,你需要实现它并在 Spring 配置中注册。通常通过实现 WebMvcConfigurer 接口的 addInterceptors 方法来添加自定义的拦截器。
详情访问原文链接:https://blog.csdn.net/2401_85480529/article/details/142743169