当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

如何处理静态域看这里!【快学springboot】6.WebMvcConfigurer配置静态资源和解决跨域

前言

目前流行前后分离部署,但有时需要将前端文件与后端文件一起打包发布,这是与sprint boot的静态资源访问相关的问题。

不单只是静态资源打包,比如使用本地某个目录作为文件存储,也可通过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这个目录

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

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

自定义配置静态资源配置

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

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

@Configuration public class WebConfig implements WebMvcConfigurer { }

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

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

@Override public void addResourceHandlers(ResourceHandlerregistry registry) { regi("/file/**") .addResourceLocations("file:D:\"); }

然后把图片放到D盘下:

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

WebMvcConfigurer接口解决跨域问题

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

/** * 跨域支持 */ @Override public void addCorsMappings(CorsRegistry registry) { regi("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH") .maxAge(3600 * 24); }

总结

WebMvcConfigurer接口不单只是能够配置静态资源访问和解决跨域问题,它还可以配置很多Web请求相关的东西,比如拦截器,数据转化(MessageConverters)等,碍于篇幅,这里就先不讨论了。可以配置的东西,可以通过接口的方法查看,如下:

SpringBoot 默认帮我们做了很多事情,这大大方便了我们的开发。 但是,有时候我们想要自己定义一些Handler,Interceptor,ViewResolver,MessageConverter,在Spring Boot 2.0之前版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated。现在,我们只能靠实现WebMvcConfigurer接口来实现了。

1.《如何处理静态域看这里!【快学springboot】6.WebMvcConfigurer配置静态资源和解决跨域》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《如何处理静态域看这里!【快学springboot】6.WebMvcConfigurer配置静态资源和解决跨域》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2205262.html

上一篇

0pp0r7plus怎么没货看这里!终于浮出水面!OPPO R7/R7 Plus完美落地

下一篇

.del怎么打开?总结很全面速看!电脑开机任务栏不见了怎么办?这两种方法都可以解决

关于如何处理静态域,你需要知道这些【快学springboot】6.WebMvcConfigurer配置静态资源和解决跨域

关于如何处理静态域,你需要知道这些【快学springboot】6.WebMvcConfigurer配置静态资源和解决跨域

如何处理静态域相关介绍,前言 虽然现在都流行前后端分离部署,但有时候还是需要把前端文件跟后端文件一起打包发布,这就涉及到了springboot的静态资源访问的问题。不单只是静态资源打包,比如使用本地某个目录作为文件存储,也可...

如何处理静态域看这里!如何入门静态分析,还不会给团队带来压力?Parasoft教你一招

如何处理静态域看这里!如何入门静态分析,还不会给团队带来压力?Parasoft教你一招

如何处理静态域相关介绍,如果您最初没有花些时间来确保已经确定了为项目采取的正确策略,那么开始入门的话可能会非常棘手。 假设您的静态分析工具已经安装,并且已经设置好了初始配置。在那之后,如果您一开始没有花些时间确保已经确定好了...

如何处理静态域看这里!详解使用 Nginx 部署静态页面的方法 值得收藏!

如何处理静态域看这里!详解使用 Nginx 部署静态页面的方法 值得收藏!

如何处理静态域相关介绍,Nginx简介 Nginx是俄罗斯人编写的非常轻的HTTP服务器,Nginx发音为“engine X”的高性能HTTP和反向代理服务器,也是IMAP/POP3/SMTP代理服务器。 Nginx 是由俄...