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

springboot應(yīng)用中靜態(tài)資源訪問與接口請(qǐng)求沖突問題解決

 更新時(shí)間:2023年06月14日 11:16:16   作者:不愛運(yùn)動(dòng)的跑者  
這篇文章主要介紹了springboot應(yīng)用中靜態(tài)資源訪問與接口請(qǐng)求沖突,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

詭異得問題總是難以避免,發(fā)生了就有必要把經(jīng)驗(yàn)留下來。在開發(fā)過程中很少見過當(dāng)靜態(tài)資源請(qǐng)求路徑與接口請(qǐng)求路徑前綴重疊得情況下發(fā)生異常,但就是遇到了:請(qǐng)求/hello/test.js /hello/testxxxx等路徑 卻能進(jìn)入到接口/hello/test對(duì)應(yīng)的方法內(nèi)。遇到這樣得問題應(yīng)該怎么辦呢?本文通過以下幾個(gè)串起來得問題分享一下經(jīng)驗(yàn)。

問題一:“springboot js文件請(qǐng)求路徑 會(huì)被controller接收到”

在 Spring Boot 中,默認(rèn)情況下,靜態(tài)資源文件(如 JavaScript 文件)的請(qǐng)求路徑不會(huì)被交由 Controller 處理。Spring Boot 的自動(dòng)配置會(huì)將靜態(tài)資源的請(qǐng)求路徑與靜態(tài)資源文件夾進(jìn)行映射,以直接返回對(duì)應(yīng)的靜態(tài)資源文件,而不經(jīng)過 Controller。

默認(rèn)情況下,Spring Boot 將靜態(tài)資源文件放置在以下目錄中:

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

如果你將 JavaScript 文件放置在這些目錄中的任何一個(gè),并且請(qǐng)求路徑與該文件的相對(duì)路徑匹配,Spring Boot 將會(huì)直接返回該靜態(tài)資源文件,而不會(huì)將請(qǐng)求交由 Controller。

如果你遇到了 JavaScript 文件的請(qǐng)求路徑被 Controller 接收到的問題,可能是因?yàn)橐韵虑闆r之一:

  • 靜態(tài)資源文件放置位置不正確:請(qǐng)確保你的 JavaScript 文件確實(shí)放置在 Spring Boot 默認(rèn)的靜態(tài)資源文件夾中(如 static 文件夾)。如果你將靜態(tài)資源文件放置在其他位置,可能會(huì)導(dǎo)致請(qǐng)求被 Controller 接收到。
  • 配置了自定義的靜態(tài)資源處理器:如果你在 Spring Boot 中配置了自定義的靜態(tài)資源處理器,可能會(huì)導(dǎo)致請(qǐng)求被 Controller 接收到。請(qǐng)檢查你的配置,確保不會(huì)覆蓋默認(rèn)的靜態(tài)資源處理器。
  • 路徑匹配問題:請(qǐng)確保你的 JavaScript 文件的請(qǐng)求路徑與實(shí)際文件的相對(duì)路徑匹配。如果路徑不匹配,可能會(huì)導(dǎo)致請(qǐng)求被交由 Controller 處理。

請(qǐng)檢查以上可能的原因,并根據(jù)具體情況進(jìn)行調(diào)整。確保靜態(tài)資源文件的位置正確,并且請(qǐng)求路徑與實(shí)際文件的相對(duì)路徑匹配。這樣,請(qǐng)求就應(yīng)該會(huì)直接返回對(duì)應(yīng)的靜態(tài)資源文件,而不會(huì)被 Controller 接收到。

問題二:“如何在 Spring Boot 中配置了自定義的靜態(tài)資源處理器”

在 Spring Boot 中,你可以通過實(shí)現(xiàn) WebMvcConfigurer 接口并重寫 addResourceHandlers() 方法來配置自定義的靜態(tài)資源處理器。

下面是一個(gè)示例,展示如何配置自定義的靜態(tài)資源處理器:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/custom/**")
                .addResourceLocations("classpath:/custom/")
                .setCachePeriod(3600)
                .resourceChain(true)
                .addResolver(new PathResourceResolver());
    }
}

在上面的示例中,我們創(chuàng)建了一個(gè)名為 WebConfig 的配置類,并實(shí)現(xiàn)了 WebMvcConfigurer 接口。在 addResourceHandlers() 方法中,我們通過 ResourceHandlerRegistry 對(duì)象進(jìn)行配置。

  • addResourceHandler("/custom/**") 指定了靜態(tài)資源的 URL 路徑模式,這里是 /custom/**。
  • addResourceLocations("classpath:/custom/") 指定了靜態(tài)資源文件的存放位置,這里是 classpath:/custom/,即 classpath 下的 custom 目錄。
  • setCachePeriod(3600) 設(shè)置了靜態(tài)資源的緩存時(shí)間,這里是 3600 秒。
  • resourceChain(true) 啟用資源鏈。這將在開發(fā)環(huán)境中提供更好的性能,并啟用對(duì)版本化資源的支持。
  • addResolver(new PathResourceResolver()) 添加了一個(gè)路徑解析器,用于解析靜態(tài)資源路徑。

在上述配置中,我們將自定義的靜態(tài)資源放置在 classpath 下的 custom 目錄中。你可以根據(jù)自己的需求修改路徑和其他屬性。

配置完成后,你可以將靜態(tài)資源文件放置在指定的位置,并通過 /custom/** 的路徑模式來訪問這些靜態(tài)資源。

請(qǐng)確保將上述配置類正確地添加到你的 Spring Boot 項(xiàng)目中,以便生效并使用自定義的靜態(tài)資源處理器。

問題三:“springboot開發(fā)得應(yīng)用組件內(nèi)自定義了靜態(tài)資源處理器,依賴于這個(gè)組件得系統(tǒng)無法讀取static下得文件,如何處理”

如果你基于 Spring Boot 開發(fā)的組件需要增加一個(gè)靜態(tài)資源目錄,同時(shí)又希望不影響依賴于這個(gè)組件的工程自有的靜態(tài)資源配置,可以通過自定義配置類和資源處理器來實(shí)現(xiàn)。

下面是一種可行的方法:

在組件的配置類中,添加自定義的資源處理器,并指定自己的靜態(tài)資源目錄。

@Configuration
public class MyComponentConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/mycomponent/**")
                .addResourceLocations("classpath:/mycomponent-static/");
    }
}

在上述示例中,我們將 /mycomponent/** 的請(qǐng)求路徑映射到 classpath:/mycomponent-static/ 目錄下的靜態(tài)資源。

在工程自有的配置類中,繼承 WebMvcConfigurerAdapter,并添加自己的靜態(tài)資源配置。

@Configuration
public class ApplicationConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/app/**")
                .addResourceLocations("classpath:/app-static/");
    }
}

在上述示例中,我們將 /app/** 的請(qǐng)求路徑映射到 classpath:/app-static/ 目錄下的工程自有的靜態(tài)資源。

通過以上配置,組件和工程可以分別擁有自己的靜態(tài)資源目錄,并且互相不會(huì)影響。請(qǐng)求 /mycomponent/** 會(huì)訪問組件的靜態(tài)資源目錄,而請(qǐng)求 /app/** 會(huì)訪問工程自有的靜態(tài)資源目錄。

請(qǐng)根據(jù)你的實(shí)際需求修改路徑和處理邏輯,并將以上配置類添加到對(duì)應(yīng)的組件和工程中。這樣,你就可以在不影響彼此的情況下,分別管理和訪問各自的靜態(tài)資源。

問題小結(jié)

最終發(fā)現(xiàn)是在應(yīng)用組件中做了下面幾件事導(dǎo)致異常一直不斷:

1.組件內(nèi)自定義了靜態(tài)資源處理器

2.組件內(nèi)自定義靜態(tài)資源處理器時(shí)是通過集成org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport實(shí)現(xiàn)得,沒有通過實(shí)現(xiàn)接口org.springframework.web.servlet.config.annotation.WebMvcConfigurer來實(shí)現(xiàn)。

3.配置靜態(tài)資源處理器時(shí)寫法上不一致,本應(yīng)該是

@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/test/**")
                .addResourceLocations("classpath:/ui/test/");
    }

而寫成了

@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/test/**")
                .addResourceLocations("classpath:/ui/")
                .addResourceLocations("file:" + filePath)
                .setCachePeriod(3600);
    }

到此這篇關(guān)于springboot應(yīng)用中靜態(tài)資源訪問與接口請(qǐng)求沖突的文章就介紹到這了,更多相關(guān)springboot靜態(tài)資源訪問與接口請(qǐng)求沖突內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringFramework應(yīng)用接入Apollo配置中心過程解析

    SpringFramework應(yīng)用接入Apollo配置中心過程解析

    這篇文章主要介紹了SpringFramework應(yīng)用接入Apollo配置中心過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java使用反射來獲取泛型信息示例

    Java使用反射來獲取泛型信息示例

    這篇文章主要介紹了Java使用反射來獲取泛型信息,結(jié)合實(shí)例形式分析了java基于反射操作泛型信息的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • IntelliJ IDEA 配置與插件全部遷移到其他盤徹底釋放C盤空間

    IntelliJ IDEA 配置與插件全部遷移到其他盤徹底釋放C盤空間

    這篇文章給大家介紹IntelliJ IDEA 配置與插件全部遷移到其他盤徹底釋放C盤空間,本文將詳細(xì)解釋這一問題的根源,并提供兩種實(shí)用的遷移方案,幫你把 IDEA 的所有用戶數(shù)據(jù)安全地移到其他盤,徹底釋放 C 盤空間,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • 詳解mybatis plus使用insert沒有返回主鍵的處理

    詳解mybatis plus使用insert沒有返回主鍵的處理

    這篇文章主要介紹了詳解mybatis plus使用insert沒有返回主鍵的處理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Spring Boot 使用 WebServiceTemplate 調(diào)用 WebService的完整步驟

    Spring Boot 使用 WebServiceTemplate 調(diào)用&nbs

    文章介紹了使用Spring WebServiceTemplate調(diào)用WebService的方法,包括添加依賴、配置WebServiceTemplate、編寫調(diào)用工具類、注意事項(xiàng)及完整的調(diào)用步驟,特別強(qiáng)調(diào)了調(diào)用.NET的WebService需要添加SOAPAction請(qǐng)求頭,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • 若依后端MyBatis改為MyBatis-Plus方式

    若依后端MyBatis改為MyBatis-Plus方式

    文章介紹了如何將MyBatis-Plus集成到RuoYi項(xiàng)目中,包括添加依賴、修改配置文件、重寫MyBatis配置和修改代碼生成器文件
    2024-11-11
  • spring boot activiti工作流的搭建與簡(jiǎn)單使用

    spring boot activiti工作流的搭建與簡(jiǎn)單使用

    這篇文章主要給大家介紹了關(guān)于spring boot activiti工作流的搭建與簡(jiǎn)單使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 用Java打造簡(jiǎn)易計(jì)算器的實(shí)現(xiàn)步驟

    用Java打造簡(jiǎn)易計(jì)算器的實(shí)現(xiàn)步驟

    這篇文章主要介紹了如何設(shè)計(jì)和實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Java命令行計(jì)算器程序,該程序能夠執(zhí)行基本的數(shù)學(xué)運(yùn)算(加、減、乘、除),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • java使用jaxb操作xml示例

    java使用jaxb操作xml示例

    JAXB主要用來實(shí)現(xiàn)對(duì)象和XML之間的序列化和反序列化,關(guān)于JAXB的介紹就不多說了,這里主要總結(jié)下基本使用方法和一些注意事項(xiàng)
    2014-04-04
  • java List中相同的數(shù)據(jù)合并到一起

    java List中相同的數(shù)據(jù)合并到一起

    這篇文章主要介紹了java List中相同的數(shù)據(jù)合并到一起,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

大埔区| 安多县| 慈利县| 渝中区| 什邡市| 昌吉市| 内丘县| 大宁县| 印江| 疏勒县| 武威市| 微博| 临汾市| 娱乐| 嘉峪关市| 黎川县| 灵宝市| 舟山市| 洞头县| 杨浦区| 拉孜县| 邵东县| 昭苏县| 兴安县| 安徽省| 汾阳市| 莱州市| 苍南县| 峨眉山市| 宜宾县| 承德县| 牙克石市| 保山市| 社旗县| 顺义区| 桐庐县| 通海县| 台北县| 新化县| 楚雄市| 科技|