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

SpringBoot 靜態(tài)資源訪問(wèn)(圖片/JS/CSS)配置詳解(最新推薦)

 更新時(shí)間:2026年04月08日 10:01:16   作者:希望永不加班  
本文主要講述了SpringBoot靜態(tài)資源的默認(rèn)規(guī)則、自定義配置、本地映射、外部路徑、權(quán)限放行、打包部署等內(nèi)容,重點(diǎn)介紹了SpringBoot對(duì)靜態(tài)資源的自動(dòng)映射以及如何解決圖片上傳成功但訪問(wèn)404、JS/CSS加載失敗等問(wèn)題,感興趣的朋友跟隨小編一起看看吧

在 SpringBoot 項(xiàng)目開(kāi)發(fā)中,靜態(tài)資源訪問(wèn)是前端頁(yè)面、圖片上傳、富文本、后臺(tái)管理系統(tǒng)必備的功能。
很多同學(xué)經(jīng)常遇到:圖片上傳成功但訪問(wèn) 404、JS/CSS 加載失敗、自定義目錄不生效、線上環(huán)境無(wú)法訪問(wèn)等問(wèn)題。

今天就來(lái)講講 SpringBoot 靜態(tài)資源的默認(rèn)規(guī)則、自定義配置、本地映射、外部路徑、權(quán)限放行、打包部署。

一、什么是靜態(tài)資源?

  • • 圖片:jpg、png、gif、webp
  • • 樣式:css、less、scss
  • • 腳本:js、ts
  • • 靜態(tài)頁(yè)面:html、ico、font
  • • 上傳文件:Excel、PDF、視頻

SpringBoot 對(duì)這些資源提供自動(dòng)映射,也支持高度自定義。

二、SpringBoot 默認(rèn)靜態(tài)資源規(guī)則(自動(dòng)生效)

默認(rèn) 5 個(gè)靜態(tài)資源路徑(優(yōu)先級(jí)從高到低):

  • 1. META-INF/resources
  • 2. resources/
  • 3. static/(最常用)
  • 4. public/
  • 5. webapp/

默認(rèn)訪問(wèn)規(guī)則:
直接訪問(wèn)資源名即可,不需要加目錄前綴。

示例:

src/main/resources/static/images/logo.png

訪問(wèn)地址:

http://localhost:8080/images/logo.png

三、最常用場(chǎng)景:自定義靜態(tài)資源映射

實(shí)際項(xiàng)目中,我們會(huì)把用戶(hù)上傳的圖片/文件存放在服務(wù)器外部路徑,避免項(xiàng)目重新打包文件丟失。

這時(shí)候必須用:SpringMVC 資源映射

1. 編寫(xiě)配置類(lèi)

package com.demo.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * 靜態(tài)資源配置
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    /**
     * 靜態(tài)資源映射
     * 訪問(wèn)路徑 /uploads/xxx.jpg  →  映射到本地 D:/uploads/xxx.jpg
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 1. 訪問(wèn) URL 規(guī)則
        registry.addResourceHandler("/uploads/**")
                // 2. 本地真實(shí)路徑(末尾必須加 /)
                .addResourceLocations("file:D:/uploads/");
        // 2. 也可以配置相對(duì)路徑
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }
}

2. 訪問(wèn)示例

本地文件:

D:/uploads/avatar.jpg

訪問(wèn)地址:

http://localhost:8080/uploads/avatar.jpg

四、application.yml 配置靜態(tài)資源

如果你不想寫(xiě)配置類(lèi),可以直接在 yml 中配置:

spring:
  web:
    resources:
      # 自定義靜態(tài)資源路徑
      static-locations: classpath:/static/,classpath:/public/,file:./uploads/

?? 注意:
配置后會(huì)覆蓋默認(rèn)路徑,不是追加,所以要把需要的路徑都寫(xiě)上。

五、靜態(tài)資源放行(解決 Shiro/Security 攔截 404)

如果項(xiàng)目集成了 Shiro/Spring Security,靜態(tài)資源會(huì)被登錄攔截,必須手動(dòng)放行:

1. Shiro 放行配置

filterMap.put("/static/**", "anon");
filterMap.put("/uploads/**", "anon");
filterMap.put("/**.js", "anon");
filterMap.put("/**.css", "anon");
filterMap.put("/**.png", "anon");
filterMap.put("/**.jpg", "anon");
filterMap.put("/**.ico", "anon");

2. Security 放行配置

http.authorizeRequests()
    .antMatchers("/static/**","/uploads/**","/**.js","/**.css").permitAll()
    .anyRequest().authenticated();

六、自定義 favicon.ico(網(wǎng)站圖標(biāo))

只需要把 favicon.ico 放到:

resources/static/favicon.ico

SpringBoot 自動(dòng)加載,無(wú)需任何配置。

七、SpringBoot 靜態(tài)資源緩存(生產(chǎn)優(yōu)化)

registry.addResourceHandler("/static/**")
        .addResourceLocations("classpath:/static/")
        // 瀏覽器緩存 10 天
        .setCachePeriod(864000);

八、圖片上傳 + 回顯完整實(shí)戰(zhàn)

1. 上傳接口

@PostMapping("/upload")
public Result upload(MultipartFile file) throws IOException {
    // 上傳目錄
    String path = "D:/uploads/";
    File dir = new File(path);
    if (!dir.exists()) dir.mkdirs();
    // 文件名
    String fileName = UUID.randomUUID() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
    file.transferTo(new File(path + fileName));
    // 返回可訪問(wèn)的 URL
    String url = "http://localhost:8080/uploads/" + fileName;
    return Result.success(url);
}

2. 配置映射

registry.addResourceHandler("/uploads/**")
        .addResourceLocations("file:D:/uploads/");

九、Linux 服務(wù)器部署路徑寫(xiě)法

registry.addResourceHandler("/uploads/**")
        .addResourceLocations("file:/usr/local/uploads/");

十、靜態(tài)資源 404 常見(jiàn)原因

  • 1. 路徑末尾缺少 /
    • 錯(cuò)誤:/uploads
    • 正確:/uploads/**
  • 2. 本地路徑末尾缺少 /
    • 錯(cuò)誤:file:D:/uploads
    • 正確:file:D:/uploads/
  • 3. 被攔截器/權(quán)限框架攔截
    • 需要放行靜態(tài)資源
  • 4. Windows 與 Linux 路徑格式不一致
    • Windows:D:/uploads/
    • Linux:/usr/local/uploads/
  • 5. 目錄權(quán)限不足
    • Linux 需要給目錄讀寫(xiě)權(quán)限

十一、SpringBoot 靜態(tài)資源核心總結(jié)

  • 1. 默認(rèn)路徑:static 文件夾直接訪問(wèn)
  • 2. 外部文件:用 addResourceHandler 映射
  • 3. 圖片上傳:必須用外部路徑,避免打包丟失
  • 4. 權(quán)限攔截:一定要放行靜態(tài)資源
  • 5. 路徑格式:末尾必須加 /
  • 6. 生產(chǎn)環(huán)境:配置緩存提升性能

掌握這些,所有靜態(tài)資源問(wèn)題全部解決!

 總結(jié)與建議

  • 簡(jiǎn)單項(xiàng)目:直接使用默認(rèn)的 src/main/resources/static 目錄存放所有靜態(tài)資源即可,無(wú)需任何配置。
  • 需要區(qū)分請(qǐng)求:在 application.yml 中設(shè)置 spring.mvc.static-path-pattern: /resources/**,為靜態(tài)資源請(qǐng)求統(tǒng)一加上前綴。
  • 處理上傳文件不要使用 static-locations,而是創(chuàng)建一個(gè)配置類(lèi),通過(guò) addResourceHandlers 方法將特定 URL 映射到磁盤(pán)絕對(duì)路徑

到此這篇關(guān)于SpringBoot 靜態(tài)資源訪問(wèn)(圖片/JS/CSS)配置詳解(最新推薦)的文章就介紹到這了,更多相關(guān)SpringBoot 靜態(tài)資源訪問(wèn)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Annotation(Java 注解)的實(shí)現(xiàn)代碼

    Java Annotation(Java 注解)的實(shí)現(xiàn)代碼

    本篇文章介紹了,Java Annotation(Java 注解)的實(shí)現(xiàn)代碼。需要的朋友參考下
    2013-05-05
  • 基于springboot activiti 配置項(xiàng)解析

    基于springboot activiti 配置項(xiàng)解析

    這篇文章主要介紹了springboot activiti 配置項(xiàng)解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 老生常談Java虛擬機(jī)垃圾回收機(jī)制(必看篇)

    老生常談Java虛擬機(jī)垃圾回收機(jī)制(必看篇)

    下面小編就為大家?guī)?lái)一篇老生常談Java虛擬機(jī)垃圾回收機(jī)制(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • maven多模塊打包注意事項(xiàng)詳解

    maven多模塊打包注意事項(xiàng)詳解

    這篇文章主要為大家介紹了maven多模塊打包注意事項(xiàng)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • IDEA2023.3.4開(kāi)啟SpringBoot項(xiàng)目的熱部署(圖文)

    IDEA2023.3.4開(kāi)啟SpringBoot項(xiàng)目的熱部署(圖文)

    本文使用的開(kāi)發(fā)工具是idea,使用的是springboot框架開(kāi)發(fā)的項(xiàng)目,配置熱部署,可以提高開(kāi)發(fā)效率,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • java實(shí)現(xiàn)在一張大圖片上添加小圖及文字

    java實(shí)現(xiàn)在一張大圖片上添加小圖及文字

    這篇文章主要介紹了java實(shí)現(xiàn)在一張大圖上添加小圖及文字,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring中的@PathVariable注解詳細(xì)解析

    Spring中的@PathVariable注解詳細(xì)解析

    這篇文章主要介紹了Spring中的@PathVariable注解詳細(xì)解析,@PathVariable 是 Spring 框架中的一個(gè)注解,用于將 URL 中的變量綁定到方法的參數(shù)上,它通常用于處理 RESTful 風(fēng)格的請(qǐng)求,從 URL 中提取參數(shù)值,并將其傳遞給方法進(jìn)行處理,需要的朋友可以參考下
    2024-01-01
  • Java實(shí)現(xiàn)手寫(xiě)一個(gè)線程池的示例代碼

    Java實(shí)現(xiàn)手寫(xiě)一個(gè)線程池的示例代碼

    線程池技術(shù)想必大家都不陌生把,相信在平時(shí)的工作中沒(méi)有少用,而且這也是面試頻率非常高的一個(gè)知識(shí)點(diǎn),那么大家知道它的實(shí)現(xiàn)原理和細(xì)節(jié)嗎?本文就來(lái)通過(guò)手寫(xiě)一個(gè)簡(jiǎn)單的線程池框架,去掌握線程池的基本原理,感興趣的可以學(xué)習(xí)一下
    2022-10-10
  • 手工體驗(yàn)smtp和pop3協(xié)議 郵件實(shí)現(xiàn)詳解(二)

    手工體驗(yàn)smtp和pop3協(xié)議 郵件實(shí)現(xiàn)詳解(二)

    POP3/IMAP協(xié)議定義了郵件客戶(hù)端軟件和POP3郵件服務(wù)器的通信規(guī)則,這篇文章我們就來(lái)手工體驗(yàn)SMTP和POP3協(xié)議的奧秘,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java實(shí)現(xiàn)獲取服務(wù)器資源(內(nèi)存,負(fù)載,磁盤(pán)容量)

    Java實(shí)現(xiàn)獲取服務(wù)器資源(內(nèi)存,負(fù)載,磁盤(pán)容量)

    這篇文章主要為大家詳細(xì)介紹了如何Java實(shí)現(xiàn)獲取服務(wù)器資源信息,包括內(nèi)存,負(fù)載,磁盤(pán)容量等內(nèi)容,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-07-07

最新評(píng)論

长葛市| 潼关县| 龙口市| 宁安市| 宽城| 北安市| 当涂县| 花莲市| 宿迁市| 合山市| 庆城县| 涞水县| 台州市| 桃江县| 杂多县| 富蕴县| 太原市| 萨嘎县| 柯坪县| 阿瓦提县| 米易县| 治县。| 北碚区| 三门峡市| 仁寿县| 葫芦岛市| 盐源县| 宜宾县| 汽车| 凤翔县| 万山特区| 柳河县| 宜章县| 思南县| 伊通| 仙居县| 来凤县| 蚌埠市| 岳阳市| 额尔古纳市| 荃湾区|