SpringBoot靜態(tài)資源映射規(guī)則淺析
1. 靜態(tài)資源映射規(guī)則
在項目中雙擊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});
}
});
}
}
隨后進入到getStaticLocations()方法可以發(fā)現(xiàn)變量 staticLocations 的取值如下:
"classpath:/META-INF/resources/"
"classpath:/resources/"
"classpath:/static/"
"classpath:/public/"
即項目運行時會到上述路徑下尋找靜態(tài)資源,也可以自定義靜態(tài)資源路徑,需在 application.properties 中配置:
spring.resources.static-locations=classpath:/folder1/,classpath:/folder2/
注:一旦自定義了靜態(tài)文件夾的路徑,則默認的靜態(tài)資源路徑就會失效。
2. 歡迎頁
靜態(tài)資源路徑下的 index.html 文件會被/**所映射,當訪問http://localhost:8080/時 ,會默認映射到靜態(tài)資源文件夾下的 index.html。
遇到的問題
新建 index.html 文件后運行項目,訪問http://localhost:8080/時會頁面錯誤:

控制臺報如下錯誤:

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

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

