springboot使用攔截器

建個springboot項目,目錄結構以下

MyInterceptor實現HandlerInterceptor接口

可根據須要實現三個方法中的一個或多個 git

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是添加不攔截的路徑spring

@Configuration
public class MyConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        添加攔截器
        InterceptorRegistration interceptorRegistration = registry.addInterceptor(new MyInterceptor());
//
        interceptorRegistration.addPathPatterns("/**")
                               .excludePathPatterns("/test");
    }
}
複製代碼

測試

瀏覽器訪問 http://localhost:8080/hello ,控制檯輸出瀏覽器

瀏覽器訪問 http://localhost:8080/test ,控制檯輸出

碼雲代碼springboot

相關文章
相關標籤/搜索