【SpringBoot】六、SpringBoot中拦截器功能的实现
程序员文章站
2024-02-07 23:02:04
...
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 中拦截器功能的实现就介绍到这儿,基本能满足我们日常开发需要
如您在阅读中发现不足,欢迎留言!!!
下一篇: 怎样操作vue-cli2.9.3
推荐阅读
-
【SpringBoot】六、SpringBoot中拦截器功能的实现
-
在springboot中实现同一个用户只能登陆一次 再次登陆顶下上一次登陆的用户
-
SpringBoot 之 SpringMVC拦截器从Request中获取参数并解决request的请求流只能读取一次的问题
-
SpringBoot中如何灵活的实现接口数据的加解密功能?
-
SpringBoot2 Jpa 批量删除功能的实现
-
面试-springboot+Mybatis实现简单的登录功能
-
Springboot实现VNC的反向代理功能
-
SpringBoot中并发定时任务的实现、动态定时任务的实现(看这一篇就够了)
-
springboot整合mail实现邮箱的发送功能
-
SpringBoot中默认缓存实现方案的示例代码