为了账号安全,请及时绑定邮箱和手机立即绑定

Springboot中如何访问静态资源

标签:
SpringBoot

1. application中需要先行的两个配置项

1.1 spring.mvc.static-path-pattern

这个配置项是告诉springboot,应该以什么样的方式去寻找资源。默认配置为 /* 。换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求
比如下面这个配置

spring.mvc.static-path-pattern=/soul/*

如果原先访问首页的地址是:http://localhost:8888/index.html
那么在你配置这个配置后,上面的访问就失效了,现在访问同样的页面需要这样访问:http://localhost:8888/soul/index.html

  • 问题1:配置这个配置后原本http://localhost:8888可以直接访问首页,但是现在http://localhost:8888/soul访问不了首页。

    • 后记:多次使用后发现只要配置了这个配置,不管配成什么,http://localhost:8888都访问不了首页。

  • 问题2:配置访问路径为/soul/后原本可以访问resources下其他文件夹的目录下的静态资源,现在不可以了。比如下面截图中test/test.html不能访问了,在没有配置为/soul/可以通过http://localhost:8888/test/test.html访问

    webp

    1.png

1.2 spring.resources.static-locations

这个配置项是告诉springboot去哪找资源。

# 默认值为spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

根据前后关系确定优先级,也就是说如果/META-INF/resources/目录和/resources都有一个index.html,那么根据默认的优先级,会去访问/META-INF/resources/下的资源。

2. 一个配置的实例

首先项目目录是这个样子的:static和tempaltes各有几个页面,其中有一个重名的test页面用来测试优先级

webp

2.png


由于现在建立的springboot项目,一般会将js、css等静态文件放在static下,而将页面放在templates下,所以配置上只配置了资源目录,第一个配置使用默认的*/ **,具体如下。

spring.resources.static-locations=classpath:/templates/,classpath:/static/

配置完了启动项目在8888端口,访问http://localhost:8888/,根据上面理论应该会访问到static下的index.html上,结果如图:

webp

3.png


访问:http://localhost:8888/test.html,目测会访问到templates下的test.html上,因为配置中templates的优先级高于static,结果如图

webp

4.png


同样的,如果有建文件夹的需求在对应目录下建文件夹,并把静态资源放进去即可访问。



作者:每天都懒得减肥
链接:https://www.jianshu.com/p/a9e6edd46e98


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
205
获赞与收藏
1007

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消