Spring boot 静态资源访问

0. 两个配置

spring.mvc.static-path-pattern

spring.resources.static-locations

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

1.1 spring.mvc.static-path-patterncss

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

好比下面这个配置spring

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

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

  • 问题1:配置这个配置后本来http://localhost:8888能够直接访问首页,可是如今http://localhost:8888/soul访问不了首页。
    • 后记:屡次使用后发现只要配置了这个配置,无论配成什么,http://localhost:8888都访问不了首页。
  • 问题2:配置访问路径为/soul/后本来能够访问resources下其余文件夹的目录下的静态资源,如今不能够了。好比下面截图中test/test.html不能访问了,在没有配置为/soul/能够经过http://localhost:8888/test/test.html访问

1.2 spring.resources.static-locations

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

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

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

2. 一个配置的实例

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

因为如今创建的springboot项目,通常会将js、css等静态文件放在static下,而将页面放在templates下,因此配置上只配置了资源目录,第一个配置使用默认的*/ **,具体以下。spa

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

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

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

一样的,若是有建文件夹的需求在对应目录下建文件夹,并把静态资源放进去便可访问。

 

参考:https://www.jianshu.com/p/a9e6edd46e98

相关文章
相关标签/搜索