午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

SpringBoot通過源碼探究靜態資源的映射規則實現

瀏覽:112日期:2023-03-13 10:22:16

我們開發一個Spring Boot項目,肯定要導入許多的靜態資源,比如css,js等文件

如果我們是一個web應用,我們的main下會有一個webapp,我們以前都是將所有的頁面導在這里面的,對吧!但是我們現在的pom呢,打包方式是為jar的方式,那么這種方式SpringBoot能不能來給我們寫頁面呢?當然是可以的,但是SpringBoot對于靜態資源放置的位置,是有規定的!

1、靜態資源映射規則1.1、第一種映射規則

SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfiguration 這個配置類里面;

WebMvcAutoConfigurationAdapter 中有很多配置方法;其中就有一個添加資源處理方法:addResourceHandlers (),源碼如下。

@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {super.addResourceHandlers(registry);if (!this.resourceProperties.isAddMappings()) {logger.debug('Default resource handling disabled');return;}ServletContext servletContext = getServletContext();addResourceHandler(registry, '/webjars/**', 'classpath:/META-INF/resources/webjars/');addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {registration.addResourceLocations(this.resourceProperties.getStaticLocations());if (servletContext != null) {registration.addResourceLocations(new ServletContextResource(servletContext, SERVLET_LOCATION));}});}

通過分析上面源碼可得,添加的靜態資源映射路徑為/webjars/**,資源路徑為classpath:/META-INF/resources/webjars/

什么是webjars

WebJars是將客戶端(瀏覽器)資源(JavaScript,Css等)打成jar包文件,以對資源進行統一依賴管理。WebJars的jar包部署在Maven中央倉庫上。

webjars官網

我們可以到webjars官網上找到自己需要的資源,在自己的工程中添加入maven依賴,即可直接使用這些資源了。

比如,我們要導入jquery資源

<dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.6.0</version></dependency>

導入后我們可以通過資源路徑找到資源的存放位置并訪問,我們在webjars網站導入的資源都符合下圖的結構

SpringBoot通過源碼探究靜態資源的映射規則實現

通過路徑訪問,成功訪問到靜態資源!

SpringBoot通過源碼探究靜態資源的映射規則實現

1.2、第二種映射規則

下面我們繼續分析源碼

SpringBoot通過源碼探究靜態資源的映射規則實現

getStaticPathpattern():獲得靜態路徑模式,點進去看一下源碼

public String getStaticPathPattern() {return this.staticPathPattern;}

再看一下staticPathPattern的源碼

SpringBoot通過源碼探究靜態資源的映射規則實現

/**就是當前目錄下的所有靜態資源都能識別,但是當前目錄下具體指的又是什么呢?我們點開resourceProperties的源碼便可看出來。源碼如下:

SpringBoot通過源碼探究靜態資源的映射規則實現

上面源碼很清楚的給出了我們四個靜態資源路徑,所以只要是這四個目錄下的靜態資源,都可以直接獲取。

我們來測試一下,先補齊上面的目錄,然后再resource目錄放一個js資源

SpringBoot通過源碼探究靜態資源的映射規則實現

啟動springboot應用測試:成功訪問到靜態資源!

SpringBoot通過源碼探究靜態資源的映射規則實現

1.3、總結

以下四個目錄存放的靜態資源可以被我們識別:

'classpath:/META-INF/resources/''classpath:/resources/''classpath:/static/''classpath:/public/'

注意:

第一個目錄的訪問路徑為localhost:8080/webjars/資源目錄結構,后面三個訪問路徑為localhost:8080/資源名

第二種映射規則的優先級為:resources>static(默認)>public

2、自定義靜態資源路徑

我們可以自己通過配置文件來指定一下,哪些文件夾是需要我們放靜態資源文件的,在application.properties中配置;

spring.resources.static-locations=classpath:/coding/,classpath:/cheng/

但是通過下面源碼我們可以看出,如果自定義了資源路徑,那么上面默認的四個路徑就失效了,所以最好不要自定義路徑,使用springboot幫我們自動配置好的就行。

if (!this.resourceProperties.isAddMappings()) {logger.debug('Default resource handling disabled');return;}

到此這篇關于SpringBoot通過源碼探究靜態資源的映射規則實現的文章就介紹到這了,更多相關SpringBoot 靜態資源映射規則內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 国产精品久久久久久久免费看 | 欧美色影院 | 欧美午夜久久 | 女人高潮特级毛片 | 国产日韩免费视频 | 操操操操操 | 色妇网 | 91视频看片 | 国产在线观看www | 亚洲日本视频在线观看 | 果冻传媒少妇借种av剧情在线 | 四虎成人在线视频 | 六月综合激情 | 精品久久久久久久久久久久久 | 亚洲伦理中文字幕 | 人人爽人人香蕉 | 九九在线观看免费高清版 | 日韩第一页在线 | 午夜激情在线观看 | 久久精品免费看 | av撸撸| 国产黄在线 | 女同性恋毛片 | 亚洲国产激情 | 黄色在线免费视频 | 日韩av中文字幕在线播放 | 在线观看中文字幕 | 一级爱片| 日韩欧美在线第一页 | 黄色av国产 | 亚洲字幕av一区二区三区四区 | av网站观看| 欧美午夜免费 | 中文字幕视频网站 | 美女视频一区 | 超碰在线人人草 | 国产麻豆成人传媒免费观看 | 日本高清www | 久久精品国产一区二区 | 超碰在线观看97 | 色婷婷伊人 |