【SpringBoot4】SpringBoot中拦截器功能的实现

人生之路不会是一帆风顺的,我们会遇上顺境,也会遇上逆境,在所有成功路上折磨你的,背后都隐藏着激励你奋发向上的动机,人生没有如果,只有后果与结果,成熟,就是用微笑来面对一切小事。

导读:本篇文章讲解 【SpringBoot4】SpringBoot中拦截器功能的实现,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

Spring Boot 1.5,都是靠重写 WebMvcConfigurerAdapter 的方法来添加自定义拦截器
SpringBoot 2.0 后,推荐实现 WebMvcConfigurer 或者继承 WebMvcConfigurationSupport 实现

本次我们选择实现 WebMvcConfigurer 接口实现拦截器功能

1、实现 WebMvcConfigurer 接口
创建 MyWebConfigurer.java,并实现 WebMvcConfigurer 接口

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

2、开放静态资源

在 SpringBoot 中,我们将静态资源放在 resources/static/ 目录下,如图:

【SpringBoot4】SpringBoot中拦截器功能的实现

 

/**
 * 这个方法是用来配置静态资源的,比如html,js,css,等等
 *
 * @param registry
 */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    WebMvcConfigurer.super.addResourceHandlers(registry);
}

我们设置 static/ 目录下的资源访问不会被拦截

3、请求路径拦截

/**
 * 这个方法用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效
 *
 * @param registry
 */
@Override
public void addInterceptors(InterceptorRegistry registry) {
    // 表示不会拦截的请求
    registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns(
            "/login",
            "/register",
            "/static/**");
    WebMvcConfigurer.super.addInterceptors(registry);
}

我们开放了 /login,/register,/static/**,这些路径不会被拦截

4、默认访问路径

/**
 * 设置默认页面
 *
 * @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

5、跨域处理

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/124449.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!