最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于SpringBoot啟動類靜態(tài)資源路徑問題

 更新時(shí)間:2021年09月09日 11:35:57   作者:「已注銷」  
這篇文章主要介紹了SpringBoot啟動類靜態(tài)資源路徑問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot啟動類靜態(tài)資源路徑

SpringBoot核心配置類

SpringBoot核心JAR包--》spring-boot-autoconfigure-2.2.6.RELEASE.jar

其下面有--》org.springframework.boot.autoconfigure.web

其中有類--》ResourceProperties

類中這樣定義默認(rèn)靜態(tài)資源訪問:

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
      "classpath:/resources/", "classpath:/static/", "classpath:/public/" };

分別是一下四個(gè)靜態(tài)資源路徑

  • /META-INF/resources/
  • /resources/
  • /static/
  • /public/

靜態(tài)資源都是再classpath中,那么問題來了,IDEA中的classpath在哪里呢 ?我們來看

點(diǎn)擊進(jìn)入項(xiàng)目的結(jié)構(gòu)設(shè)計(jì)中--》首先在打開的項(xiàng)目窗口打開File->Project Structure...,得到如下圖所示的項(xiàng)目結(jié)構(gòu):

Source Folders表示的都是代碼源文件目錄,生成的class文件會輸出到target->classess文件夾中,但是里面的源文件不會復(fù)制到target->classes文件夾中,Test Source Folders表示的都是測試代碼源文件目錄,生成的class文件同樣會輸出到target->classess文件夾中,并且里面的源文件不會復(fù)制到target->classes文件夾中。

而Recource Folders表示的都是資源文件目錄,這些目錄里面的文件會在代碼編譯運(yùn)行被直接復(fù)制到target->classess文件夾中。target->classes即為classpath,任何我們需要在classpath前綴中獲取的資源都必須在target->classes文件夾中找到,否則將出現(xiàn)java.io.FileNotFoundException的錯(cuò)誤信息。

如果想添加一些自己的目錄到Source Folders、Resource Folders這樣的目錄分類里來實(shí)現(xiàn)編譯過后正確地文件輸出,則可以點(diǎn)擊需要設(shè)置的文件夾,再在文件結(jié)構(gòu)窗口上方的Make as:后面選擇正確的目錄類型即可。

所以我們的項(xiàng)目靜態(tài)資源的文件夾訪問就是以這里的Resource Folder為基準(zhǔn),舉個(gè)例子:

classpath:/static/指的就是:src/main/resources/static

所以SpringBoot的默認(rèn)index.xml可以放在路徑為src/main/resources/static的文件夾下,這樣項(xiàng)目一啟動index.html就自動加載了。

我們將src設(shè)置成了Resource Folders,接下來我們在src下創(chuàng)建/META-INF/resources/路徑:

我們啟動項(xiàng)目(這個(gè)時(shí)候是沒有建立任何類,啟動類啟動加載默認(rèn)的index)

成功展示index.html的內(nèi)容,沒有問題。其他幾個(gè)路徑都是沒有問題的,

這里有一個(gè)問題就是這幾個(gè)路徑的人順序問題。我們封閉建立這樣四個(gè)路徑,分別設(shè)置不同的內(nèi)容:

啟動后輸出的還是HelloWorld,現(xiàn)在我們刪掉/META-INF/resources/的index.html再看看:

成功輸出。其他的就不再試了,明確的是它的默認(rèn)加載順序是按照源碼里的順序來的。分別是:

  • /META-INF/resources/
  • /resources/
  • /static/
  • /public/
private String[] appendSlashIfNecessary(String[] staticLocations) {
   String[] normalized = new String[staticLocations.length];
   for (int i = 0; i < staticLocations.length; i++) {
      String location = staticLocations[i];
      normalized[i] = location.endsWith("/") ? location : location + "/";
   }
   return normalized;
}
//循環(huán)遍歷存放這幾個(gè)路徑,按照順序加載。

靜態(tài)文件存放位置設(shè)置

默認(rèn)配置

SpringBoot把類路徑下的/static,/public,/resources和META-INF/resources文件下的靜態(tài)文件映射為/,可以通過http://localhost:8080/訪問

SpringBoot默認(rèn)了靜態(tài)文件的位置src/main/resources下的static目錄,如下:

static目錄需要自己創(chuàng)建。HTML也可以放在里面

src/main/resources
    |_static
        |_js
        |_img
            |_demo.png
        |_css

在html代碼中使用一下代碼即可訪問圖片

<img src="img/demo.png">

自定義位置

添加一個(gè)目錄位置

src/main/resources
    |_myImg
        |_demo.png
    |_static
        |_js
        |_img
        |_css

添加一個(gè)@Configuration注解的配置類

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
 * 自定義的圖片路徑
 * @author pzr
 *
 */
@Configuration
public class MyImageAddr extends WebMvcConfigurerAdapter  {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //addResourceHandler中的是訪問路徑,可以修改為其他的字符串
        //addResourceLocations中的是實(shí)際路徑
        registry.addResourceHandler("/myImg/**").addResourceLocations("classpath:/myImg/");
        super.addResourceHandlers(registry);
    } 
}

在html代碼中使用一下代碼即可訪問圖片

<img src="/myImg/demo.png">

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

抚顺县| 新田县| 鹤山市| 静乐县| 平陆县| 金湖县| 荣昌县| 亚东县| 万荣县| 方山县| 新巴尔虎右旗| 沾益县| 南木林县| 呼和浩特市| 阜宁县| 肃北| 静乐县| 龙南县| 郓城县| 武乡县| 库伦旗| 深州市| 格尔木市| 酒泉市| 临夏县| 鄂州市| 佳木斯市| 定襄县| 类乌齐县| 罗田县| 将乐县| 犍为县| 东乡县| 平谷区| 花垣县| 灵丘县| 永顺县| 白城市| 宜川县| 茶陵县| 伊宁市|