转载

springboot使用拦截器

springboot使用拦截器

MyInterceptor实现HandlerInterceptor接口

可根据需要实现三个方法中的一个或多个

springboot使用拦截器

preHandle是在controller前执行,这个方法只会在当前这个Interceptor的preHandle方法返回值为true的时候才会向下执行,postHandle在业务处理器处理请求执行完成后,生成视图之前执行,afterCompletion在DispatcherServlet完全处理完请求后被调用,可用于清理资源等 。

public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return true;
    }

    @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");
    }
}
复制代码

controller测试代码

@RestController
public class TestController {
    @GetMapping(value = "/hello")
    public String hello() {

        System.out.println("hello controller");
        return "hello world";
    }

    @GetMapping(value = "/test")
    public String test()
    {
        System.out.println("test controller");
        return "this is test";
    }

}

复制代码

配置文件MyConfig实现WebMvcConfigurer接口

实现接口方法addInterceptors,registry.addInterceptor是添加一个拦截器,addPathPatterns()是添加要拦截的路径,excludePathPatterns是添加不拦截的路径

@Configuration
public class MyConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        添加拦截器
        InterceptorRegistration interceptorRegistration = registry.addInterceptor(new MyInterceptor());
//
        interceptorRegistration.addPathPatterns("/**")
                               .excludePathPatterns("/test");
    }
}
复制代码
浏览器访问

,控制台输出

原文  https://juejin.im/post/5dce67016fb9a020277922b0
正文到此结束
Loading...