springboot靜態資源映射詳解

一、Springboot靜態資源映射基礎

Springboot 是目前最常用的 Java 開發框架之一,其中最重要的一個特性是可以快速構建 Web 應用程序。在 Web 應用程序中,靜態資源通常是指一些不需要經過處理的文件,例如頁面中用到的圖片、JavaScript 文件以及 CSS 文件等等。靜態資源映射是指訪問這些靜態資源時被請求到的位置。在 Springboot 中,靜態資源映射通常是基於 webjars、classpath 和 file 等資源路徑進行的。下面分別介紹這三種常用的靜態資源映射方法。

二、基於 webjars 進行靜態資源映射

webjars 是將 JavaScript 和 CSS 等前端庫打包在 JAR 文件中,以使得項目更好地依賴和管理這些前端庫。在 Springboot 中,我們可以使用 Maven 或 Gradle 等構建工具將所需的 webjars 引入項目中,並在 application.properties 或 application.yml 文件中進行配置。配置示例如下:

spring.webjars.prefix=/webjars
spring.resources.static-locations=/webjars/

在配置完畢後,可以使用 localhost:8080/webjars/ 加上前端庫名稱和版本號訪問到相應的資源文件。例如訪問 bootstrap 的 CSS 文件可使用 localhost:8080/webjars/bootstrap/3.3.7/css/bootstrap.min.css 。這裡需要注意的是,訪問鏈接「/webjars/」是由 spring.resources.static-locations 和 spring.webjars.prefix 兩個配置項組合而成,其中 spring.resources.static-locations 是配置靜態資源文件夾的前綴,而 spring.webjars.prefix 是配置訪問 webjars 路徑的前綴。

三、基於 classpath 進行靜態資源映射

classpath 是指項目中編譯後生成的 class 文件所在的路徑。當我們把一些靜態資源文件(如圖片、文本文件、配置文件等)放置在 src/main/resources 路徑下後,這些就可以通過 classpath 直接獲取。在 Springboot 中,我們可以使用以下配置項對靜態資源進行映射。

spring.resources.static-locations=classpath:/static/

需要注意的是,訪問鏈接「/」是定位到靜態資源的默認路徑,比如我們在 src/main/resources/static 下有一個 index.html 文件,那麼可以通過 localhost:8080/index.html 訪問到該文件。我們也可以在配置文件中通過設置屬性來更改這個默認路徑,示例如下:

spring.mvc.static-path-pattern=/resources/**

這裡的配置項是將默認路徑「/」修改為訪問路由「/resources/**」。

四、基於 file 進行靜態資源映射

在一些特殊的情況下,我們可能需要把一些圖片、文本文件、配置文件等資源文件從外部文件夾中引入到我們的項目中。此時,我們可以基於 file 進行靜態資源映射,例如:

spring.resources.static-locations=file:/Users/Desktop/images/

在以上配置中,將訪問鏈接「/」轉向到了外部路徑 /Users/Desktop/images/。同樣的,我們也可以使用以下配置項修改默認路徑。

spring.mvc.static-path-pattern=/files/**

五、Springboot默認的靜態資源映射

在 Springboot 項目中,默認的靜態資源文件夾為以下兩個路徑:

  • /META-INF/resources/
  • /resources/

這裡的 /META-INF/resources/ 是指某些 JAR 包內置的靜態資源文件,如第三方庫中的一些 CSS 和 JavaScript 文件等。而 /resources/ 是指本項目中的靜態資源文件夾。

當我們需要訪問這些默認路徑中的靜態資源文件時,Springboot 會自動映射到相應的文件。所以當某些文件在以上默認路徑下時,我們可以通過 localhost:8080/ 直接進行訪問。同時,Springboot 也允許我們修改這些默認資源文件夾的位置,我們可以通過修改 application.properties 或 application.yml 文件中的以下配置項進行修改。

spring.resources.add-mappings=false
spring.resources.static-locations=classpath:/static/, classpath:/public/, classpath:/resources/, classpath:/META-INF/resources/

結束語

本文詳細介紹了使用 Springboot 所支持的三種主要靜態資源映射方式,並且通過實際配置流程結合示例代碼展示了相關用法。相信這些知識可以幫助您更好地理解和使用 Springboot 開發 Web 應用程序,並且可以避免一些常見的開發誤區和錯誤。同時,我們也需要注意到,Springboot 中靜態資源映射涉及到的很多細節問題,需要我們在實際開發中細心鑽研。

原創文章,作者:XJYQK,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/332414.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XJYQK的頭像XJYQK
上一篇 2025-01-21 17:30
下一篇 2025-01-24 18:46

相關推薦

  • Python飛機大戰中文字資源分析

    Python飛機大戰是一款經典的飛行射擊遊戲,在遊戲過程中,玩家需要控制一架飛機不斷消滅敵人,生存到最後。該遊戲使用Python語言編寫,其中涉及到的文字資源對遊戲的整體體驗有重要…

    編程 2025-04-29
  • 從ga角度解讀springboot

    springboot作為目前廣受歡迎的Java開發框架,其中的ga機制在整個開發過程中起着至關重要的作用。 一、ga是什麼 ga即Group Artifacts的縮寫,它是Mave…

    編程 2025-04-29
  • 主存屬於可搶佔資源嗎?

    主存(內存)一般被視為非可搶佔資源,即進程已經分配內存後,操作系統不會輕易將其從該進程中搶佔。然而在一些情況下,主存也可以被視為可搶佔資源。 一、 內存分配 在大多數情況下,內存是…

    編程 2025-04-29
  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網絡接口 在配置靜態ip之前,我們首先需要查看系統中的網絡接口,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • 從零入坑嵌入式及相關優質資源推薦

    對於一個全能編程開發工程師而言,嵌入式開發是不可忽視的領域。本文將從入坑嵌入式的不同方面進行詳細闡述,並推薦一些優質資源。 一、嵌入式開發簡介 嵌入式開發是指將多種軟硬件技術融合在…

    編程 2025-04-28
  • Python中通過對象不能調用類方法和靜態方法的解析

    當我們在使用Python編寫程序時,可能會遇到通過對象調用類方法和靜態方法失敗的問題,那麼這是為什麼呢?接下來,我們將從多個方面對這個問題進行詳細解析。 一、類方法和靜態方法的定義…

    編程 2025-04-27
  • SpringBoot Get方式請求傳參用法介紹

    本文將從以下多個方面對SpringBoot Get方式請求傳參做詳細的闡述,包括URL傳參、路徑傳參、請求頭傳參、請求體傳參等,幫助讀者更加深入地了解Get請求方式下傳參的相關知識…

    編程 2025-04-27
  • Apache偽靜態配置Java

    本文將會從多個角度闡述如何在Apache中正確偽裝Java應用程序,實現URL的靜態化,提高網站的SEO優化和性能。以下是相關的配置和代碼實例。 一、RewriteEngine的配…

    編程 2025-04-27
  • SpringBoot如何設置不輸出Info日誌

    本篇文章將帶您了解如何在SpringBoot項目中關閉Info級別日誌輸出。 一、為什麼要關閉Info日誌 在開發中,我們經常會使用Log4j、Logback等框架來輸出日誌信息,…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25

發表回復

登錄後才能評論