在SpringBoot中使用 拦截器

来源:互联网 发布:少儿编程前景 编辑:程序博客网 时间:2024/06/05 12:44

在 SpringBoot中使用拦截器

拦截器接口 HandlerInterceptor

public interface HandlerInterceptor {    boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)            throws Exception;    void postHandle(            HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)            throws Exception;    void afterCompletion(            HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)            throws Exception;}

实现自定义的拦截器需要实现HandlerInterceptor接口

例如:LogHandlerInteceptor

public class LogHandlerInterceptor implements HandlerInterceptor {    /**     * controller 执行之前调用     */    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)            throws Exception {        System.out.println("------preHandle-----");        return true;    }    /**     * controller 执行之后,且页面渲染之前调用     */    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,            ModelAndView modelAndView) throws Exception {        System.out.println("------postHandle-----");    }    /**     * 页面渲染之后调用,一般用于资源清理操作     */    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)            throws Exception {        System.out.println("------afterCompletion-----");    }}

注册拦截器

@Configurationpublic class MyWebConfig extends WebMvcConfigurerAdapter{    /**     * 注册 拦截器     */    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(new LogHandlerInterceptor());    }}

测试:

UserController

@RestControllerpublic class UserController {    @GetMapping("/user/home")    public String home(){        System.out.println("--- user home ---");        return "user home";    }}

这里写图片描述

这里写图片描述