Spring Boot中靜態資源(JS, 圖片)等應該放在什么位置


Spring Boot的靜態資源,比如圖片應該放在什么位置呢, 如果你放在傳統WEB共的類似地方, 比如webapp或者WEB-INF下,你會得到一張示意文件未找到的破碎圖片。那應該放哪里呢? 百度一搜, 各種長篇大論,讓人頭痛。

1. 默認位置:

Spring Boot能大大簡化WEB應用開發的原因, 最重要的就是遵循“約定優於配置”這一基本原則。Spring Boot的關於靜態資源的默認配置已經完全滿足絕大部分WEB應用的需求。沒必要去弄手續繁雜的自定義,用Spring Boot的約定就好了。

在Maven 工程目錄下,所有靜態資源都放在src/main/resource目錄下,結構如下:

復制代碼
src/main/resource
          |__________static
                        |_________js
                        |_________images
                        |_________css
                 .....
復制代碼

例如,imges目錄下的demo.jpg 在HTML/JSP中訪問是的路徑就是<img src="/images/demo.jpg">, 因為Spring Boot的缺省工作目錄就是src/main/java, 當訪問資源時,就是src/main/resources, 而/static/**被SPRING BOOT被映射到了classpath:/static下。所以也可以不帶起始的“/”,直接寫成<img src="images/demo.jpg">。

 

以下代碼示例為Hello World 加了個圖片顯示, 這里的demo.jpg在maven工程的位置存放就是src/main/resource/static/images/demo.jpg,

可用<img src="image/demo.jpg">訪問

復制代碼
@Controller
//@EnableAutoConfiguration
public class HelloController {
    @RequestMapping("/")
    @ResponseBody
public String hello() {
        return "hello world <img src=\"image/demo.jpg\">";
    }
}
復制代碼

 

2. 添加自定義:

注意是添加,不是替換,添加不影響原來的默認約定。非要自定義,那就配置類繼承WebMvcConfigurerAdapter 

復制代碼
@Configuration
public class MyWebAppConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/myResource/**").addResourceLocations("classpath:/myResource/");
        super.addResourceHandlers(registry);
    }    
}
復制代碼

這個是添加了一個新位置:

src/main/resource
          |__________myResource

如果newDemo.jpg放在src/main/resource/myResource/images/newDemo.jpg,那么就可用<img src="image/newDemo.jpg">訪問


免責聲明!

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



猜您在找 Spring Boot中靜態資源(JS, 圖片)等應該放在什么位置 Spring Boot 中的靜態資源到底要放在哪里? JS應該放在什么位置? Spring Boot 在 application.properties 文件中自定義靜態資源位置 【web性能】js應該放在html頁面的什么位置 js