轉載自:https://blog.csdn.net/justry_deng/article/details/81406752
SpringBoot默認的存放靜態資源文件的位置是:
注:SpringBoot中的src/main/resources/資源文件夾對應classpath:。
默認存放靜態資源文件的位置,在SpringBoot項目中的文件夾位置爲:
即:搜索文件夾的優先順序和數組中的順序一致。
當我們訪問IP地址:端口號/時,就相當於訪問到了這四個文件夾。
如:訪問:localhost:8080/123.jpg時,就會先去看src/main/resources資源文件夾下的META-INF下的resoures文件夾
中是否有123.jpg,沒 有的話再看src/main/resources資源文件夾下的resoures文件夾中是否有123.jpg,沒有的
話再看src/main/resources資源文件夾下的static文件夾中是否有123.jpg,沒有的話再看src/main/resources資源
文件夾下的public文件夾中是否有123.jpg。
手動配置其搜索資源文件的文件夾位置
把文件放在SpringBoot項目下的classpath中:
方式一:通過配置類
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
-
- /**
- * 主動設置URL匹配路徑
- *
- * @author JustryDeng
- * @date 2018年8月4日 上午1:36:38
- */
- @Configuration
- public class MyURLPatternConfiguration extends WebMvcConfigurationSupport {
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/fileData/**").addResourceLocations("classpath:/myFile/");
- super.addResourceHandlers(registry);
- }
- }
此時:訪問IP地址:端口號/fileData/時,就相當於到了src/main/resources資源文件夾下的myFile文件夾中了,圖示說明:
注:此時默認的四個文件夾都失效了,如果想讓默認的四個文件夾依然有效,那麼可以在配置類中多次通
過.addResourceHandler添加指定那四個文件夾。
方式二:通過配置文件
# 設置當URI爲/fileData/**時,才進過靜態資源 # 注:如果設置爲/**,那麼表示任何訪問都會經過靜態資源路徑 spring.mvc.static-path-pattern=/fileData/** # 自定義路徑 # 注:自定義路徑時,默認的四個文件夾下中的“META-INF下的resoures文件夾”仍然有效,其他三個文件夾失效 # (此時:訪問ip:端口號/fileData/時,相當於訪問到了 “自定義的文件夾”和 “META-INF下的resoures文件夾”); # 注:搜索文件時,自定義的文件夾的優先級要高於默認的四個文件夾 spring.resources.static-locations=classpath:/myFile/ # 提示:如果我們顯式地把自定義文件夾 和 默認的四個文件夾都寫出來,那麼都會有效(此時,優先級 從左至右 依次降低) #spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/myFile/
把文件放在項目jar包之外的服務器磁盤中的某個文件夾中:
方式一:通過配置類
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
-
- /**
- * 主動設置URL匹配路徑
- *
- * @author JustryDeng
- * @date 2018年8月4日 上午1:36:38
- */
- @Configuration
- public class MyURLPatternConfiguration extends WebMvcConfigurationSupport {
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- // 指定到D盤下的myFile文件夾
- // 注:如果是Linux的話,直接指定文件夾路徑即可,不需要指定哪個盤(Linux就一個可用盤)
- registry.addResourceHandler("/fileData/**").addResourceLocations("file:D:/myFile/");
- super.addResourceHandlers(registry);
- }
- }
此時:我們訪問IP地址:端口號/fileData/時,就相當於到了服務器D盤下的myFile文件夾中了。
注:此時默認的四個文件夾都失效了,如果想讓默認的四個文件夾依然有效,那麼可以在配置類中通過
.addResourceHandler多次添加四個文件夾。
方式二:通過配置文件
# 設置當URI爲/fileData/**時,才進過靜態資源 # 注:如果設置爲/**,那麼表示任何訪問都會經過靜態資源路徑 spring.mvc.static-path-pattern=/fileData/** # 自定義路徑 # 注:自定義路徑時,默認的四個文件夾下中的“META-INF下的resoures文件夾”仍然有效,其他三個文件夾失效 # (此時:訪問ip:端口號/fileData/時,相當於訪問到了 “自定義的文件夾”和 “META-INF下的resoures文件夾”); # 注:搜索文件時,自定義的文件夾的優先級要高於默認的四個文件夾 spring.resources.static-locations=file:D:/myFile/ # 提示:如果我們顯式地把自定義文件夾 和 默認的四個文件夾都寫出來,那麼都會有效(此時,優先級 從左至右 依次降低) #spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:D:/myFile/