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/ 目录下,如图:
/**
* 这个方法是用来配置静态资源的,比如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