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

SpringBoot配置外部靜態(tài)資源映射問題

 更新時(shí)間:2022年11月16日 15:26:52   作者:佯佯Young  
這篇文章主要介紹了SpringBoot配置外部靜態(tài)資源映射問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBoot配置外部靜態(tài)資源映射

使用場景

實(shí)際項(xiàng)目中,特別是前后端分離的項(xiàng)目,SpringBoot后臺(tái)打包(jar包)后,以jar包形式直接啟動(dòng)服務(wù)后,項(xiàng)目中包含的靜態(tài)資源則無法動(dòng)態(tài)修改。

此時(shí),需要配置一個(gè)外部的映射路徑來實(shí)現(xiàn)靜態(tài)資源訪問和修改、上傳功能等。

SpringBoot版本說明

版本:2.3.4.RELEASE

添加外部路徑配置

staticPath為自定義的外部資源物理路徑,放在配置文件中,如:D:/Tasks/

application.properties文件內(nèi)容如下:

server.port=8086
server.servlet.context-path=/iserver
spring.output.ansi.enabled=ALWAYS
spring.mvc.static-path-pattern=/static/**
spring.mvc.format.date=yyyy-MM-dd HH:mm:ss

project.static = D:/Tasks/

配置映射

添加WebMvcConfig,如下:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

    @Value("${project.static}")
    private String staticPath;
	/**
	* 跨域
	**/
	@Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
        		.allowedHeaders("*")
                .allowedOrigins("*")
                .allowedMethods("POST","GET","PUT","OPTIONS","DELETE")
                .allowCredentials(true);
    }
    /**
     * 靜態(tài)資源處理
     **/
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/file/**").addResourceLocations("file:" + staticPath);
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
}

測試訪問

在D盤新建Tasks文件夾,在新建js文件夾,存放jquery-3.1.1.min.js

正常啟動(dòng)項(xiàng)目,在瀏覽器輸入地址: http://localhost:8086/iserver/file/js/jquery-3.1.1.min.js

SpringBoot靜態(tài)資源映射原理

HandlerMapping:處理器映射。保存了每一個(gè)Handler能處理哪些請(qǐng)求。 

①靜態(tài)資源讀取 

只要靜態(tài)資源放在類路徑下: /static、public 、/resources 、/META-INF/resources這四個(gè)類路徑目錄下, 

則訪問 : 當(dāng)前項(xiàng)目根路徑/ + 靜態(tài)資源名就可以讀取到這四個(gè)目錄下的靜態(tài)資源 

原理: 靜態(tài)映射/ 

請(qǐng)求進(jìn)來,先去找Controller看能不能處理。不能處理的所有請(qǐng)求又都交給靜態(tài)資源處理器。靜態(tài)資源也找不到則響應(yīng)404頁面 

②改變默認(rèn)的靜態(tài)資源路徑

spring:

//這個(gè)修改用戶訪問服務(wù)器時(shí)資源映射的前綴(默認(rèn)無前綴,即/+資源名可以直接訪問,現(xiàn)在需要加上前綴res/) 

(但是這個(gè)修改資源映射前綴會(huì)導(dǎo)致歡迎頁和favicon失效,因?yàn)榈讓哟a是死代碼 / 映射到服務(wù)器靜態(tài)資源目錄中,而不是spring.mvc.static-path-pattern這個(gè)變量) 

mvc:

static-path-pattern: /res/

//這個(gè)修改靜態(tài)資源在服務(wù)器的默認(rèn)存放路徑(默認(rèn)是/static/,/public/,/resources/、META-INF/resouces/) 

resources: 

static-locations: [classpath:/haha/]

③靜態(tài)資源映射底層原理 

靜態(tài)資源映射自動(dòng)配置類地址–

/web/servlet/WebMvcAutoConfiguration

解析一:**

當(dāng)配置文件中設(shè)置

則循環(huán)進(jìn)去,下面配置的所有靜態(tài)資源映射規(guī)則不生效

解析二:

可以在配置文件中設(shè)置靜態(tài)資源的緩存規(guī)則,比如設(shè)置瀏覽器緩存靜態(tài)資源的時(shí)長

解析三:

將外部訪問/webjars/的請(qǐng)求映射到/META-INF/resources/webjars/

 

即外界訪問/webjars/jquery/3.5.1/jquery.js就可以直接訪問到這個(gè)路徑下的jquery.js 

解析四:

 

首先獲取到配置文件中設(shè)置的static-Path-Pattern設(shè)置的靜態(tài)資源訪問路徑,如果沒有設(shè)置,則默認(rèn)為/** 

這個(gè)訪問路徑映射對(duì)應(yīng)服務(wù)器中的以下路徑

所以靜態(tài)資源放在上述四個(gè)目錄(而這些目錄也是可以在配置文件中修改的)中時(shí),外界訪問/+資源名,相當(dāng)于在這四個(gè)目錄中尋找要找的資源 

④歡迎頁的處理規(guī)則

解析一:

點(diǎn)進(jìn)WelcomePageHandlerMapping構(gòu)造器方法中

從中可以看到,只有歡迎頁存在,并且staticPathPattern等于/**時(shí),才能夠使用歡迎頁功能 

否則調(diào)用能處理index請(qǐng)求的controller 

⑤favicon原理 

favicon是瀏覽器自動(dòng)向服務(wù)器發(fā)送請(qǐng)求/favicon.ico請(qǐng)求來設(shè)置頁面圖標(biāo),和代碼沒什么關(guān)系,所以當(dāng)修改了配置文件中的staticPathPattern時(shí),/favicon.ico不能夠在服務(wù)器找到對(duì)應(yīng)前綴目錄下的favicon.ico,自然設(shè)置不了頁面圖標(biāo)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談SpringBoot如何自定義Starters

    淺談SpringBoot如何自定義Starters

    今天帶大家來學(xué)習(xí)SpringBoot如何自定義Starters,文中有非常詳細(xì)的圖文介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot+Vue前后端分離實(shí)現(xiàn)審核功能的示例

    SpringBoot+Vue前后端分離實(shí)現(xiàn)審核功能的示例

    在實(shí)際開發(fā)中,審核功能是一個(gè)非常常用的功能,本文就來介紹一下使用SpringBoot+Vue前后端分離實(shí)現(xiàn)審核功能的示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • Java反射機(jī)制介紹

    Java反射機(jī)制介紹

    Java的反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任何一個(gè)類,都可以知道這個(gè)類的所有屬性和方法,對(duì)于任何一個(gè)對(duì)象,都可以調(diào)用它所有的方法和屬性,修改部分類型信息,這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象方法的功能稱為Java的反射機(jī)制
    2022-08-08
  • RedisTemplate.opsForHash()用法簡介并舉例說明

    RedisTemplate.opsForHash()用法簡介并舉例說明

    redistemplate.opsforhash是RedisTemplate模板類中的一個(gè)方法,用于獲取操作哈希數(shù)據(jù)類型的接口,這篇文章主要給大家介紹了關(guān)于RedisTemplate.opsForHash()用法簡介并舉例說明的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • Apache Commons Math3學(xué)習(xí)之?dāng)?shù)值積分實(shí)例代碼

    Apache Commons Math3學(xué)習(xí)之?dāng)?shù)值積分實(shí)例代碼

    這篇文章主要介紹了Apache Commons Math3學(xué)習(xí)之?dāng)?shù)值積分實(shí)例代碼,涉及使用辛普森積分的例子,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • @Value設(shè)置默認(rèn)值后,獲取不到配置值的原因分析

    @Value設(shè)置默認(rèn)值后,獲取不到配置值的原因分析

    這篇文章主要介紹了@Value設(shè)置默認(rèn)值后,獲取不到配置值的原因,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 使用SpringBoot跨系統(tǒng)調(diào)用接口的方案

    使用SpringBoot跨系統(tǒng)調(diào)用接口的方案

    這篇文章主要介紹了使用SpringBoot跨系統(tǒng)調(diào)用接口的方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • springboot+thymeleaf找不到視圖的解決方案

    springboot+thymeleaf找不到視圖的解決方案

    這篇文章主要介紹了springboot+thymeleaf找不到視圖的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 基于SpringBoot+Redis實(shí)現(xiàn)一個(gè)簡單的限流器

    基于SpringBoot+Redis實(shí)現(xiàn)一個(gè)簡單的限流器

    在Spring?Boot中使用Redis和過濾器實(shí)現(xiàn)請(qǐng)求限流,過濾器將在每個(gè)請(qǐng)求到達(dá)時(shí)檢查請(qǐng)求頻率,并根據(jù)設(shè)定的閾值進(jìn)行限制,這樣可以保護(hù)您的應(yīng)用程序免受惡意請(qǐng)求或高并發(fā)請(qǐng)求的影響,本文我們通過Spring?Boot?+Redis?實(shí)現(xiàn)一個(gè)輕量級(jí)的消息隊(duì)列,需要的朋友可以參考下
    2023-08-08
  • 淺談多線程_讓程序更高效的運(yùn)行

    淺談多線程_讓程序更高效的運(yùn)行

    下面小編就為大家?guī)硪黄獪\談多線程_讓程序更高效的運(yùn)行。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10

最新評(píng)論

大冶市| 芜湖县| 南城县| 万山特区| 南陵县| 勃利县| 浪卡子县| 崇仁县| 中江县| 霸州市| 兴仁县| 彭州市| 永济市| 宁远县| 库车县| 浦城县| 枣强县| 丰镇市| 沂南县| 岫岩| 松桃| 岚皋县| 马关县| 南汇区| 高碑店市| 华安县| 铜川市| 清流县| 军事| 平南县| 莆田市| 兴业县| 怀集县| 阿拉善右旗| 桃源县| 遂昌县| 桐庐县| 龙川县| 庆元县| 宁武县| 若羌县|