Spring Boot 访问静态资源css/js

守听  金牌会员 | 2023-10-21 09:29:36 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 895|帖子 895|积分 2685


一、前言

我们用 Spring Boot 搭建 Web 应用时(如搭建一个博客),经常需要在 Html 中访问一些静态资源,比如:

  • css 样式;
  • js 脚本;
  • favicon.ico 图标等;
而在 Spring Boot 中如果没有做任何配置,是无法直接访问静态资源的,通常会报 404 错误
二、Spring Boot 访问静态资源的默认目录

Spring Boot 访问静态资源,默认有两个默认目录:

  • classpath/static 目录:src/mian/resource
  • ServletContext 根目录下: src/main/webapp
啥是 classpath呢 ?
这里简要的介绍下,classpath 即 WEB-INF 下面的 classes 目录 ,在 Spring Boot 项目中就是src/main/resource 目录。
2.1 classpath 目录下-访问默认文件夹名为 static

项目目录截图:

这里有人就想说,我可不可以修改一下访问路径呢,答案是肯定的,肯定可以。
在 properties文件里面设置 spring.resources.static-locations 就ok了。
spring.resources.static-locations 的默认值是:classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
图示修改:我将默认路径改成了 src/main/resource/static/images/,在里面我写了一个 index.html 里面写的 html img

访问的时候就找的是我设置的路径了。
2.2 ServletContext 根目录下( src/main/webapp ) - webapp 就是默认访问文件夹

这个可能很多人就不陌生了,一般来说 src/main/java 里面放Java代码,resource 里面放配置文件, xml, webapp里面放页面,js之类的。
ServletContent 根目录就是 src/main/webapp
一般创建的maven项目里面都没有 webapp 文件夹,在这里我们自己在 src/main 目录下创建一个 webapp
项目目录,以及访问截图:

三、Spring Boot 访问静态资源解决方案

上面知识点主要做些科普,至于如何在 Spring Boot 访问静态资源,可以通过以下两种方案来解决以上问题:
3.1 第一种方案(推荐)

修改 application.yml , 添加以下配置:
  1. # 放开 Spring Boot 项目中 /static 目录下静态资源的拦截
  2. spring:
  3.   mvc:
  4.     static-path-pattern: /static/**
复制代码
application.properties 文件添加如下:
  1. spring.mvc.static-path-pattern=/static/**
复制代码
3.2 第二种方案

添加一个 WebMvcConfig.java 配置类,告诉 springboot 静态资源的加载路径:
  1. package com.exception.qms.config;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  4. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  5. /**
  6. * @date 2020/10/7
  7. * @time 14:37
  8. * @discription
  9. **/
  10. @Configuration
  11. public class WebMvcConfig extends WebMvcConfigurerAdapter {
  12.     @Override
  13.     public void addResourceHandlers(ResourceHandlerRegistry registry) {
  14.         registry.addResourceHandler("/static/**")
  15.                 .addResourceLocations("classpath:/static/");
  16.     }
  17. }
复制代码
二选一,添加完成后,我们就可以在 Spring Boot 中正常访问静态资源辣~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表