SpringBoot靜態(tài)資源映射規(guī)則淺析
1. 靜態(tài)資源映射規(guī)則
在項(xiàng)目中雙擊shift或ctrl+N搜索WebMvcAutoConfiguration.class文件,文件中的addResourceHandlers方法如下:
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
} else {
this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
this.addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (this.servletContext != null) {
ServletContextResource resource = new ServletContextResource(this.servletContext, "/");
registration.addResourceLocations(new Resource[]{resource});
}
});
}
}
隨后進(jìn)入到getStaticLocations()方法可以發(fā)現(xiàn)變量 staticLocations 的取值如下:
"classpath:/META-INF/resources/"
"classpath:/resources/"
"classpath:/static/"
"classpath:/public/"
即項(xiàng)目運(yùn)行時(shí)會(huì)到上述路徑下尋找靜態(tài)資源,也可以自定義靜態(tài)資源路徑,需在 application.properties 中配置:
spring.resources.static-locations=classpath:/folder1/,classpath:/folder2/
注:一旦自定義了靜態(tài)文件夾的路徑,則默認(rèn)的靜態(tài)資源路徑就會(huì)失效。
2. 歡迎頁
靜態(tài)資源路徑下的 index.html 文件會(huì)被/**所映射,當(dāng)訪問http://localhost:8080/時(shí) ,會(huì)默認(rèn)映射到靜態(tài)資源文件夾下的 index.html。
遇到的問題
新建 index.html 文件后運(yùn)行項(xiàng)目,訪問http://localhost:8080/時(shí)會(huì)頁面錯(cuò)誤:

控制臺(tái)報(bào)如下錯(cuò)誤:

Spring Boot 的版本是 2.7.8,tomcat 的版本是 9.0.71。Spring Boot 通過內(nèi)嵌的 tomcat 來運(yùn)行項(xiàng)目,但需要依靠本地的 java 環(huán)境,我本地的 java 版本是 Java 1.8.0_261(即 java 8 版本),一般 java 8 和 tomcat 8.x.x 配套使用,這里可能是版本沖突導(dǎo)致的問題。將項(xiàng)目的 SDK 改為jbr-11 JetBrains Runtime version 11.0.10即可解決問題:

JetBrains Runtime 可以認(rèn)為是 IDEA 自帶的 java 運(yùn)行環(huán)境。
到此這篇關(guān)于SpringBoot靜態(tài)資源映射規(guī)則淺析的文章就介紹到這了,更多相關(guān)SpringBoot靜態(tài)資源映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決idea不支持SpringBoot yml文件的圖文教程
這篇文章主要介紹了解決idea不支持SpringBoot yml文件,需要的朋友可以參考下2018-06-06
Java多線程Queue、BlockingQueue和使用BlockingQueue實(shí)現(xiàn)生產(chǎn)消費(fèi)者模型方法解析
這篇文章主要介紹了Java多線程Queue、BlockingQueue和使用BlockingQueue實(shí)現(xiàn)生產(chǎn)消費(fèi)者模型方法解析,涉及queue,BlockingQueue等有關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以參考。2017-11-11
SpringBoot動(dòng)態(tài)修改yml配置文件的方法詳解
這篇文章主要為大家詳細(xì)介紹了SpringBoot動(dòng)態(tài)修改yml配置文件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
解決Feign調(diào)用的GET參數(shù)傳遞的問題
這篇文章主要介紹了解決Feign調(diào)用的GET參數(shù)傳遞的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Spring Boot ActiveMQ如何設(shè)置訪問密碼
這篇文章主要介紹了Spring Boot ActiveMQ如何設(shè)置訪問密碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Java通過SMS短信平臺(tái)實(shí)現(xiàn)發(fā)短信功能 含多語言
這篇文章主要為大家詳細(xì)介紹了Java通過SMS短信平臺(tái)實(shí)現(xiàn)發(fā)短信功能的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-07-07
簡(jiǎn)單了解spring bean作用域?qū)傩詓ingleton和prototype的區(qū)別
這篇文章主要介紹了簡(jiǎn)單了解spring bean作用域?qū)傩詓ingleton和prototype的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12

