想要了解拦截器的拦截时间节点 请查看:

定义拦截器

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @Author: zanglikun
 * @Date: 2022/5/7 18:43
 * @Description: 拦截器,实现HandlerInterceptor,然后重写方法
 */
@Slf4j
@Component // 可省略,但需要注册到WebMvcConfigurer
public class MyInterceptor implements HandlerInterceptor {

    /**
     * handler 参数的类型可以是以下几种:更多用于操作反射
     * HandlerMethod:代表一个控制器方法,包含方法的相关信息,如方法名、参数等。
     * HandlerInterceptor:代表一个拦截器,可以在请求处理前、处理后或渲染视图时执行一些操作。
     * ResourceHttpRequestHandler:代表一个处理静态资源的处理器,可以处理静态文件的请求。
     * WebSocketHandler:代表一个 WebSocket 处理器,用于处理 WebSocket 相关的请求。
     */
    // 请求拦截前处理
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 请求进来,会被拦截,这里可做日志打印,可获取所有请求参数。返回true 代表放行 返回false 代表拒绝请求。
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }

    //  Controller已经处理完毕了
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    // 结尾工作,如果preHandle方法内部(非Controller等后续有异常哈)抛出异常,本方法将不会触发,一般不过使用此方法
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

注册自定义拦截器

【教程】:创建MVCConfig类。实现WebMvcConfigurer,重写addInterceptor()方法即可!

注意:如果注册多个拦截器没有设置Order,那么先注册的先执行!如果都设定了Order那么Order越小优先执行!Order一样,估计就是按照拦截器名字为准了或注册的顺序!

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MVCConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册一个拦截器,并放行/user下的接口
        registry.addInterceptor(new MyInterceptor()).excludePathPatterns("/user/**").order(0);
    }
}
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤