欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

示例:

將web資源Jquery.js 引入進Spring Boot 項目中

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

(2)復制Maven版的依賴代碼

(3)引入該依賴

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

(4)啟動Spring Boot 項目,瀏覽器器輸入 http://localhost:8080/webjars/jquery/3.7.1/jquery.js 訪問 jquery.js 靜態(tài)資源

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

2.  /** 訪問當前項目的任何資源

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

在項目中雙擊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});
                    }
 
                });
            }
}

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

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

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

示例一:

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

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

然后啟動Spring Boot 項目,瀏覽器訪問: http://localhost:8080/hello.html ,結(jié)果如下圖所示:  

示例二: 

在項目/src/main/resources/static 目錄中存放一張照片,然后啟動Spring Boot 項目,瀏覽器訪問:http://localhost:8080/test.png

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

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

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

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

靜態(tài)資源文件夾下的所有index.html 被稱之為靜態(tài)首頁或者歡迎頁,它們會被 /** 映射,也就是當我們訪問 "/" 或者 "/index.html" 時,都會跳轉(zhuǎn)到靜態(tài)首頁(歡迎頁)

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

示例:

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

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>首頁</title>
</head>
  <h1>歡迎訪問首頁!</h1>
</html>

然后啟動Spring Boot項目, 瀏覽器訪問 http://localhost:8080/或者   http://localhost:8080/index.html   結(jié)果如下圖所示:  

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

相關(guān)文章

最新評論