springboot使用Handler拦截器

2022-07-20 08:16:17

需要创建类并实现HandlerInterceptor接口,其中有三个方法需要重现分别为preHandle()afterCompletion() 以及postHandle(),分别对应前拦截,后拦截,以及进入ModelAndView后和返回前拦截

public class MyHandlerInterceptor implements HandlerInterceptor {

    public static Logger logger = LoggerFactory.getLogger(MyHandlerInterceptor.class);

    /**
     * 前拦截,在进入ModelAndView之前拦截
     * 使用场景有:身份校验,身份授权
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        logger.debug("preHandle:前拦截");
        return true;
    }

    /**
     * 后拦截,该方法在handler方法执行完之后执行,
     * 使用场景有:日志记录,管理,异常统一处理等等
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        logger.debug("aftercompletion:后拦截");
    }

    /**
     * 在进入ModelView后返回之前,
     * 
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        logger.debug("postHandle:post拦截");
    }
}

之后需要创建配置类并实现WebMvcConfigurer接口,重现addInterceptors()方法,需要加上配置类注解

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        /**
         * 添加拦截器以及添加拦截路径
         */
        registry.addInterceptor(new MyHandlerInterceptor()).addPathPatterns("/**");
    }
}

IndexController.class

@Controller
public class IndexController  {

    @RequestMapping("/")
    @ResponseBody
    public String index(){
        System.out.println("index");
        return "SeccussMapping";
    }

}

在这里插入图片描述

  • 作者:金字塔没那么大
  • 原文链接:https://blog.csdn.net/A15217285761/article/details/101852307
    更新时间:2022-07-20 08:16:17