亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot如何啟動類靜態資源的路徑

發布時間:2021-09-09 14:35:50 來源:億速云 閱讀:157 作者:柒染 欄目:開發技術


SpringBoot如何啟動類靜態資源的路徑,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

SpringBoot啟動類靜態資源路徑

SpringBoot核心配置類

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

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

其中有類--》ResourceProperties

類中這樣定義默認靜態資源訪問:

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

分別是一下四個靜態資源路徑

  • /META-INF/resources/

  • /resources/

  • /static/

  • /public/

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

SpringBoot如何啟動類靜態資源的路徑

點擊進入項目的結構設計中--》首先在打開的項目窗口打開File->Project Structure...,得到如下圖所示的項目結構:

SpringBoot如何啟動類靜態資源的路徑

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

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

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

所以我們的項目靜態資源的文件夾訪問就是以這里的Resource Folder為基準,舉個例子:

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

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

SpringBoot如何啟動類靜態資源的路徑

我們將src設置成了Resource Folders,接下來我們在src下創建/META-INF/resources/路徑:

SpringBoot如何啟動類靜態資源的路徑

我們啟動項目(這個時候是沒有建立任何類,啟動類啟動加載默認的index)

SpringBoot如何啟動類靜態資源的路徑

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

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

SpringBoot如何啟動類靜態資源的路徑

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

SpringBoot如何啟動類靜態資源的路徑

成功輸出。其他的就不再試了,明確的是它的默認加載順序是按照源碼里的順序來的。

分別是:

  • /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;
}
//循環遍歷存放這幾個路徑,按照順序加載。

靜態文件存放位置設置

默認配置

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

SpringBoot默認了靜態文件的位置src/main/resources下的static目錄,如下:

static目錄需要自己創建。HTML也可以放在里面

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

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

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

自定義位置

添加一個目錄位置

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

添加一個@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中的是實際路徑
        registry.addResourceHandler("/myImg/**").addResourceLocations("classpath:/myImg/");
        super.addResourceHandlers(registry);
    } 
}

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

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

關于SpringBoot如何啟動類靜態資源的路徑問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖安县| 尉氏县| 上杭县| 昭觉县| 昌平区| 新昌县| 屏南县| 涞源县| 渭源县| 百色市| 衡南县| 建湖县| 呼图壁县| 河西区| 瑞丽市| 登封市| 奎屯市| 凤山县| 锡林郭勒盟| 巴马| 日土县| 灌南县| 炉霍县| 临漳县| 三门县| 宁陵县| 渝中区| 西乌珠穆沁旗| 巩留县| 张家川| 南丹县| 汶川县| 武胜县| 通江县| 邵阳县| 海林市| 托克逊县| 嘉鱼县| 辽中县| 德昌县| 蒙阴县|