首页 > 其他 > 详细

拦截器

时间:2021-04-08 18:25:55      阅读:16      评论:0      收藏:0      [点我收藏+]

实现 HandlerInterceptor/HandlerInterceptorAdapter 接口

作用范围:
在将请求发送到控制器之前
在将响应发送给客户端之前

拦截器上的三种方法:
preHandle
调用时间:Controller方法处理之前
执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行
若返回false,则中断执行,注意:不会进入afterCompletion,常用于登录检测

postHandle
调用前提:preHandle返回true
调用时间:Controller方法处理完之后,DispatcherServlet进行视图的渲染之前,也就是说在这个方法中你可以对ModelAndView进行操作
执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序倒着执行。postHandle虽然post打头,但post、get方法都能处理

afterCompletion
调用前提:preHandle返回true
调用时间:DispatcherServlet进行视图的渲染之后
多用于清理资源,注销登陆

@Component
public class ProductServiceInterceptor implements HandlerInterceptorAdapter {
   @Override
   public boolean preHandle(
      HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

      return true;
   }
   @Override
   public void postHandle(
      HttpServletRequest request, HttpServletResponse response, Object handler, 
      ModelAndView modelAndView) throws Exception {}

   @Override
   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, 
      Object handler, Exception exception) throws Exception {}
}

使用 WebMvcConfigurerAdapter向InterceptorRegistry注册此Interceptor

@Component
public class ProductServiceInterceptorAppConfig extends WebMvcConfigurerAdapter {
   @Autowired
   ProductServiceInterceptor productServiceInterceptor;

   @Override
   public void addInterceptors(InterceptorRegistry registry) {
      registry.addInterceptor(productServiceInterceptor);
      // 设置路径,排除路径
      // 国际化,文件上传
   }
}

拦截器

原文:https://www.cnblogs.com/kouwei/p/14633105.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!