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

SpringBoot對(duì)靜態(tài)資源的映射規(guī)則詳解

 更新時(shí)間:2024年12月30日 10:43:53   作者:八月五  
在Web應(yīng)用中會(huì)涉及到大量的靜態(tài)資源,例如 JS、CSS和HTML等,我們知道,Spring MVC 導(dǎo)入靜態(tài)資源文件時(shí),需要配置靜態(tài)資源的映射,但在 SpringBoot 中則不再需要進(jìn)行此項(xiàng)配置,因?yàn)镾pringBoot已經(jīng)默認(rèn)完成了這一工作,本文給大家介紹了SpringBoot對(duì)靜態(tài)資源的映射規(guī)則詳

什么是SpringBoot靜態(tài)資源映射?

在 Web 應(yīng)用中會(huì)涉及到大量的靜態(tài)資源,例如 JS、CSS 和 HTML 等。我們知道,Spring MVC 導(dǎo)入靜態(tài)資源文件時(shí),需要配置靜態(tài)資源的映射;但在 SpringBoot 中則不再需要進(jìn)行此項(xiàng)配置,因?yàn)?SpringBoot 已經(jīng)默認(rèn)完成了這一工作。

Spring Boot 默認(rèn)為我們提供了 3 種靜態(tài)資源映射規(guī)則:

  • WebJars 映射
  • 默認(rèn)資源映射
  • 靜態(tài)首頁(yè)(歡迎頁(yè))映射

如何實(shí)現(xiàn)SpringBoot靜態(tài)資源映射?

1. webjars:以jar包的方式引入靜態(tài)資源

在傳統(tǒng)的Web應(yīng)用開(kāi)發(fā)中,我們經(jīng)常需要使用眾多的JavaScript和CSS庫(kù),例如jQuery.js和Bootstrap.css。這些Web資源通常被復(fù)制到Java Web項(xiàng)目的`webapp`目錄下進(jìn)行管理。然而,在Spring Boot項(xiàng)目中,應(yīng)用是以JAR包的形式部署的,不存在`webapp`目錄。為了解決這個(gè)問(wèn)題,我們可以通過(guò)Webjars將Web資源封裝成JAR包的形式提供。具體來(lái)說(shuō),就是將Web資源(如JavaScript和CSS文件)打包成一個(gè)JAR文件,并上傳到Maven中央倉(cāng)庫(kù)進(jìn)行集中管理。當(dāng)Spring Boot項(xiàng)目需要引入這些前端資源時(shí),可以在Maven Central頁(yè)面查找所需資源的Maven依賴(lài)項(xiàng),并將它們添加到項(xiàng)目中。這樣,Spring Boot項(xiàng)目就可以方便地引入和管理前端資源了。

示例:

將web資源Jquery.js 引入進(jìn)Spring Boot 項(xiàng)目中

(1)首先Maven Central搜索Jquery依賴(lài)

(2)復(fù)制Maven版的依賴(lài)代碼

(3)引入該依賴(lài)

Spring Boot通過(guò)其MVC自動(dòng)配置類(lèi)`WebMvcAutoConfiguration`為Webjars前端資源設(shè)置了默認(rèn)的映射規(guī)則。根據(jù)源碼分析,Webjars資源的訪(fǎng)問(wèn)路徑被定義為`/webjars/**`。這意味著,任何以`/webjars/**`開(kāi)頭的請(qǐng)求,Spring Boot都會(huì)在`classpath:/META-INF/resources/webjars/`路徑下搜索對(duì)應(yīng)的Webjars資源。

(4)啟動(dòng)Spring Boot 項(xiàng)目,瀏覽器器輸入 http://localhost:8080/webjars/jquery/3.7.1/jquery.js 訪(fǎng)問(wèn) jquery.js 靜態(tài)資源

說(shuō)明訪(fǎng)問(wèn)靜態(tài)資源成功了。上面的這種方式是導(dǎo)入jar包的方式,如果我們要用自己的一些JS、CSS、jQuery文件可不可以呢?答案是可以的,所以就有了我們下面的第二種方式出現(xiàn)。 

2.  /** 訪(fǎng)問(wèn)當(dāng)前項(xiàng)目的任何資源

默認(rèn)情況下,springboot會(huì)將特定目錄中(如/static、/public、/resources/META-INF/resources)的靜態(tài)資源映射到根路徑。

在項(xiàng)目中雙擊shiftctrl+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});
                    }
 
                });
            }
}

隨后進(jìn)入到getStaticLocations()方法可以發(fā)現(xiàn)變量 staticLocations 的取值如下,當(dāng)訪(fǎng)問(wèn)項(xiàng)目中任意資源(即"/**")時(shí),Spring Boot 會(huì)默認(rèn)從以下路徑中查找資源文件(優(yōu)先級(jí)依次降低)  

"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"

這些路徑又被稱(chēng)之為靜態(tài)資源路徑,當(dāng)我們請(qǐng)求某個(gè)靜態(tài)資源(例如:.html文件)時(shí),Spring Boot 會(huì)先查找優(yōu)先級(jí)高的文件夾,然后在查找優(yōu)先級(jí)低的文件夾,直到找到指定的靜態(tài)資源為止。

示例一:

在項(xiàng)目/src/main/resources/static 目錄中創(chuàng)建一個(gè) hello.html文件,代碼如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>hello world!</h1>
</body>
</html>

然后啟動(dòng)Spring Boot 項(xiàng)目,瀏覽器訪(fǎng)問(wèn): http://localhost:8080/hello.html ,結(jié)果如下圖所示:  

示例二: 

在項(xiàng)目/src/main/resources/static 目錄中存放一張照片,然后啟動(dòng)Spring Boot 項(xiàng)目,瀏覽器訪(fǎng)問(wèn):http://localhost:8080/test.png

即項(xiàng)目運(yùn)行時(shí)會(huì)到上述路徑下尋找靜態(tài)資源,也可以自定義靜態(tài)資源路徑,需在 application.properties 中配置:

spring.resources.static-locations=classpath:/folder1/,classpath:/folder2/

注:一旦自定義了靜態(tài)文件夾的路徑,則默認(rèn)的靜態(tài)資源路徑就會(huì)失效。 

3. 靜態(tài)首頁(yè)(歡迎頁(yè))映射

靜態(tài)資源文件夾下的所有index.html 被稱(chēng)之為靜態(tài)首頁(yè)或者歡迎頁(yè),它們會(huì)被 /** 映射,也就是當(dāng)我們?cè)L問(wèn) "/" 或者 "/index.html" 時(shí),都會(huì)跳轉(zhuǎn)到靜態(tài)首頁(yè)(歡迎頁(yè))

注意:訪(fǎng)問(wèn)靜態(tài)首頁(yè)或者歡迎頁(yè)面時(shí),其查找順序也遵循默認(rèn)靜態(tài)資源的查找順序,即先查找優(yōu)先級(jí)高的目錄,在查找優(yōu)先級(jí)低的目錄,直到找到 index.html 為止。

示例:

1、在項(xiàng)目/src/main/resources/public 目錄下創(chuàng)建一個(gè) index.html 文件,代碼如下:

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>首頁(yè)</title>
</head>
  <h1>歡迎訪(fǎng)問(wèn)首頁(yè)!</h1>
</html>

然后啟動(dòng)Spring Boot項(xiàng)目, 瀏覽器訪(fǎng)問(wèn) http://localhost:8080/或者   http://localhost:8080/index.html   結(jié)果如下圖所示:  

以上就是SpringBoot對(duì)靜態(tài)資源的映射規(guī)則詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot靜態(tài)資源映射的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java表數(shù)據(jù)導(dǎo)出到Excel中的實(shí)現(xiàn)

    Java表數(shù)據(jù)導(dǎo)出到Excel中的實(shí)現(xiàn)

    這篇文章主要介紹了Java表數(shù)據(jù)導(dǎo)出到Excel中的實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 帶你入門(mén)Java的集合

    帶你入門(mén)Java的集合

    Java的集合類(lèi)型都是對(duì)java.util包中Collection接口的繼承,這里我們主要介紹依賴(lài)于collection的一些主分支,一起來(lái)看一下Java中的collection集合類(lèi)型總結(jié)
    2021-07-07
  • 淺談hibernate之映射文件VS映射注解

    淺談hibernate之映射文件VS映射注解

    下面小編就為大家?guī)?lái)一篇淺談hibernate之映射文件VS映射注解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 詳解在Java的Struts2框架中配置Action的方法

    詳解在Java的Struts2框架中配置Action的方法

    這篇文章主要介紹了詳解在Java的Struts2框架中配置Action的方法,講解了包括struts.xml中的action配置及基于注解方式Action配置的兩個(gè)方式,需要的朋友可以參考下
    2016-03-03
  • Maven打包jar生成javadoc文件和source文件代碼實(shí)例

    Maven打包jar生成javadoc文件和source文件代碼實(shí)例

    這篇文章主要介紹了Maven打包jar生成javadoc文件和source文件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java版本和C++版本的二叉樹(shù)序列化與反序列化

    Java版本和C++版本的二叉樹(shù)序列化與反序列化

    這篇文章主要介紹了Java版本和C++版本的二叉樹(shù)序列化與反序列化,二叉樹(shù)就是節(jié)點(diǎn)在內(nèi)存區(qū)域中串聯(lián)起來(lái)的,但是如果掉電,內(nèi)存上的數(shù)據(jù)就沒(méi)有了。為了保存這種結(jié)構(gòu),將二叉樹(shù)用字符串的形式保存到硬盤(pán)中,這就是序列化;從字符串形式轉(zhuǎn)換為二叉樹(shù),這就是反序列化
    2022-06-06
  • JavaWeb基于Session實(shí)現(xiàn)的用戶(hù)登陸注銷(xiāo)方法示例

    JavaWeb基于Session實(shí)現(xiàn)的用戶(hù)登陸注銷(xiāo)方法示例

    為了安全起見(jiàn),session常常用來(lái)保存用戶(hù)的登錄信息。那么服務(wù)器是怎么來(lái)實(shí)現(xiàn)的呢?下面這篇文章就來(lái)給大家介紹了關(guān)于JavaWeb基于Session實(shí)現(xiàn)的用戶(hù)登陸注銷(xiāo)的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • IDEA中使用Typora編輯md文件的方法

    IDEA中使用Typora編輯md文件的方法

    這篇文章主要介紹了IDEA中使用Typora編輯md文件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • IDEA新建springboot項(xiàng)目時(shí)未生成pom.xml文件的解決操作

    IDEA新建springboot項(xiàng)目時(shí)未生成pom.xml文件的解決操作

    這篇文章主要給大家介紹了關(guān)于IDEA新建springboot項(xiàng)目時(shí)未生成pom.xml文件的解決操作方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java基于ip2region.xdb數(shù)據(jù)庫(kù)從IP獲取到屬地解析的全攻略

    Java基于ip2region.xdb數(shù)據(jù)庫(kù)從IP獲取到屬地解析的全攻略

    在日常的Java開(kāi)發(fā)中,IP地址相關(guān)的操作是非常常見(jiàn)的需求,無(wú)論是用戶(hù)行為分析、地域化服務(wù),還是安全防護(hù),都需要精準(zhǔn)地獲取和解析IP信息,本文將詳細(xì)介紹一個(gè)功能完善的Java IP工具類(lèi),需要的朋友可以參考下
    2026-02-02

最新評(píng)論

湘潭县| 富顺县| 威信县| 阳江市| 沾化县| 曲麻莱县| 许昌市| 滦南县| 彰武县| 上犹县| 松滋市| 司法| 迁安市| 会宁县| 宜兴市| 同心县| 阳城县| 海晏县| 修武县| 鄢陵县| 伊金霍洛旗| 儋州市| 兖州市| 额济纳旗| 正镶白旗| 定日县| 饶平县| 虞城县| 高阳县| 塘沽区| 十堰市| 晋宁县| 和顺县| 长乐市| 山阳县| 祁阳县| 新干县| 岑溪市| 雅安市| 扶风县| 博野县|