Spring Boot如何加載靜態文件


Javaweb中獲取文件的方式大致可以分為兩種
  • 通過nginx等反向代理的方式獲取到靜態文件資源
  • 在web項目中配置文件映射
 
第一種方式有時間去整理,本文介紹第二種方式,通過在項目中共配置文件映射完成靜態文件的獲取。
 
Spring Boot項目中存放文件的方式通常有三種
  • resources/static:Spring Boot中默認的文件存放路徑,不需要做額外配置。
  • resouces/自定義的文件夾:這種需要在properties或者yml文件中配置spring.resources.static-locations,或者實現WebMvcConfigurer類重寫addResourceHandlers實現。
  • 存放在硬盤的其他空間,比如F:\opt\data\files,也同樣的,需要在properties或者yml文件中配置spring.resources.static-locations,或者實現WebMvcConfigurer類重寫addResourceHandlers實現。
 
結合實例去講解可能會更加的清楚,現有a、b、c、d四個文件,分別存放在不同的地方,如圖
 
文件內容示例為
F:\opt\data\files\d.txt -> Spring Boot Demo
技術交流QQ群:579949017
微信公眾號:IT咸魚圈

  

我想要訪問這四個文件,可以通過下面兩種方式配置
  • 通過properties文件配置
    server.port=8081
    server.servlet.context-path=/spring-boot-demo
    
    spring.application.name=spring-boot-demo
    
    spring.resources.static-locations=classpath:static/,classpath:files/,file:F:/opt/data/files
    

     

  • 通過實現WebMvcConfigurer重寫addResourceHandlers實現
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;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:static/")
                .addResourceLocations("classpath:files/")
                .addResourceLocations( "file:F:\\opt\\data\\files\\");
    }
}

  

上面任意的方式都可以將文件加載進來,訪問結果如下圖

如果會出現源文件亂碼的問題,可以通過File | Settings | Editor | File Encodings將幾個編碼設置為utf-8編碼格式,如果訪問頁面還是亂碼,則將源文件使用文編編輯工具轉為utf-8,一般這樣都會解決文件中中文亂碼的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM