【SpringBoot】六、SpringBoot中攔截器功能的實現

Spring Boot 1.5,都是靠重寫 WebMvcConfigurerAdapter 的方法來添加自定義攔截器
SpringBoot 2.0 後,推薦實現 WebMvcConfigurer 或者繼承 WebMvcConfigurationSupport 實現

本次我們選擇實現 WebMvcConfigurer 接口實現攔截器功能

創建 MyWebConfigurer.java,並實現 WebMvcConfigurer 接口

@Configuration
public class MyWebConfigurer implements WebMvcConfigurer {
	...
}

開放靜態資源

在 SpringBoot 中,我們將靜態資源放在 resources/static/ 目錄下,如圖:
靜態資源

/**
 * 這個方法是用來配置靜態資源的,比如html,js,css,等等
 *
 * @param registry
 */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    WebMvcConfigurer.super.addResourceHandlers(registry);
}

我們設置 static/ 目錄下的資源訪問不會被攔截

請求路徑攔截

/**
 * 這個方法用來註冊攔截器,我們自己寫好的攔截器需要通過這裏添加註冊才能生效
 *
 * @param registry
 */
@Override
public void addInterceptors(InterceptorRegistry registry) {
    // 表示不會攔截的請求
    registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns(
            "/login",
            "/register",
            "/static/**");
    WebMvcConfigurer.super.addInterceptors(registry);
}

我們開放了 /login,/register,/static/**,這些路徑不會被攔截

默認訪問路徑

/**
 * 設置默認頁面
 *
 * @param registry
 */
@Override
public void addViewControllers(ViewControllerRegistry registry) {
    // registry.addViewController("/").setViewName("forward:/login.html");
    registry.addViewController("").setViewName("index");
    // 設置優先級  當請求地址有重複的時候  執行優先級最高的
    registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
    WebMvcConfigurer.super.addViewControllers(registry);
}

設置項目默認訪問地址,例如我們只訪問:127.0.0.1:8080,就會請求到 index.html

跨域處理

/**
 * 跨域處理
 *
 * @param registry
 */
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowedOrigins("*")
            .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
            .allowCredentials(true)
            .allowedHeaders("*")
            .maxAge(3600);
}

更多關於跨域處理的知識,請看我的另一篇博客:SpringBoot中使用Cors開啓跨域

關於 SpringBoot 中攔截器功能的實現就介紹到這兒,基本能滿足我們日常開發需要

如您在閱讀中發現不足,歡迎留言!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章