springboot 404_【快学springboot】6.WebMvcConfigurer配置静态资源和解决跨域

本文介绍了如何在SpringBoot中处理静态资源的自定义配置,包括将前端文件与后端一起打包发布,并通过WebMvcConfigurer接口设置自定义静态资源路径。同时,文章还讲解了如何利用该接口解决跨域问题,提供了一种实现跨域支持的配置方法。
摘要由CSDN通过智能技术生成

前言

虽然现在都流行前后端分离部署,但有时候还是需要把前端文件跟后端文件一起打包发布,这就涉及到了springboot的静态资源访问的问题。不单只是静态资源打包,比如使用本地某个目录作为文件存储,也可通过WebMvcConfigurer接口来配置。

在与前端交互的过程中,也会碰到一个跨域的问题。我们也可通过WebMvcConfigurer接口来解决跨域的问题。

springboot默认静态文件目录

Spring Boot 默认为我们提供了静态资源处理,我建议大家直接使用Spring Boot的默认配置即可。默认提供的静态资源映射如下:

  • classpath:/META-INF/resources
  • classpath:/resources
  • classpath:/static
  • classpath:/public

这些目录的静态资源时可以直接访问到的。上面这几个都是静态资源的映射路径,优先级顺序为:META-INF/resources > resources > static > public

使用第一讲中spring initilize工具创建的springboot工程,默认也给我们创建了classpath:/static这个目录

5ba2249e90ec823ce80dc75a43d670ff.png

我们往这个目录放一个图片,head.jpg

15b48eb8ed7a0c09a4b9314ac9cf17bc.png

通过浏览器访问http://localhost:8080/head.jpg

7010f4620dd5a68d657715cee59bfdc1.png

自定义配置静态资源配置

以上这些都是springboot默认给我们提供的,那么我们有没有能力自己自定义一个静态资源映射呢?完全可以。使用WebMvcConfigurer这个类即可实现自定义静态资源配置。

我们新建一个WebConfig类实现WebMvcConfigurer接口 ,如下:

@Configurationpublic class WebConfig implements WebMvcConfigurer { }

现在我们什么都不配置,然后重启应用,访问http://localhost:8080/head.jpg。却发现程序报404了:

409550ef7317302aa602f5de3fe8febd.png

这是因为我们配置了WebMvcConfigurer,这就替换了springboot原先的默认配置。这里我们想要自定义一个静态资源配置,比如,我们/file/**这样的请求,定向到我的D盘根目录下。我们重写WebMvcConfigurer接口的addResourceHandlers方法。如下:

@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/file/**") .addResourceLocations("file:D:");}

然后把head.jpg图片放到D盘下:

64a72afe91351613813d7f7e664cfa3d.png

这里需要注意的是,配置外部的资源要使用file声明,配置jar包内部的使用classpath声明。

WebMvcConfigurer接口解决跨域问题

可以通过重写WebMvcConfigurer的addCorsMappings方法,可以配置跨域的问题。如下:

 /** * 跨域支持 */ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值