SpringBoot中静态资源该如何处理?

应无所住,而生其心

前言

关于如何搭建SpringBoot工程以及开启Web功能,
可以查看我的这篇博客:用Spring Initializr快速构建SpringBoot及整合MVC

默认静态资源处理

首先,我们来看一下新建的SpingBoot的项目结构:
在这里插入图片描述
一般来说,我们的静态资源如.js,.css,.jpg,.gif等文件都是放在src/main/resources/static工程目录下,但实际上SpringBoot提供的静态资源映射有四种,也就是说SpringBoot的静态资源的默认配置方式有四种:

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

其中classpath:表示目录src/main/resources,如图:
在这里插入图片描述
我们可以新建如上图所示的任何路径,而不用做任何配置就能在项目根路径下访问以上路径下的静态资源。
其中上述几个静态资源的映射路径的优先级顺序为:
META-INF/resources > resources > static > public

在我们没有配置访问页面的前缀和后缀的前提之下,我们可以直接在以上任意一个路径放上index.html,当我们直接访问项目根路径时,会直接映射到index.html页面上。甚至于他们的优先级比src/main/resources/templates目录还要高!

项目根路径

如果没有进行项目名的配置,则项目根路径一般是:ip:port/ (ip地址:端口号/);若是也没有进行端口号的配置,则在我们自己开发过程中一般为:http://localhost:8080/;如果在application.yml配置文件中进行了相应配置,则为:ip:port/projectName (ip地址:端口号/项目名),如我们这样配置:

server:
  # 配置端口号
  port: 8762
  # 配置项目名
  servlet:
    context-path: /taoBao

则此时的项目根路径为:http://localhost:8762/taoBao

自定义静态资源处理

虽然说SpringBoot已经给我们提供了四个默认的静态资源映射,但如果有额外需要的话,我们也可以自行配置;又或者说,如果别人写了相应的配置,那咱也得看得懂不是(✪ω✪)

如图,在工程目录**src/main/resources/**下新建一个目录"myResources",再在"myResources"目录下新建一个名为my.html的html文件:
在这里插入图片描述
my.html文件内容如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>这是我自定义的静态资源访问路径:myResources下的my.html</h1>
</body>
</html>

启动程序,打开浏览器输入"http://localhost:8080/myResources/my.html",显示404,说明无法访问:
在这里插入图片描述
让我们来新建一个配置类,代码如下:

/**
 * @author guqueyue
 * @Date 2020/4/15
 **/
@Configuration //表示当前类是配置相关的
public class WebConfig implements WebMvcConfigurer {

    /**
     * 配置静态资源访问
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry
            // 添加对外暴露的访问路径, /** 表示多级路径
            .addResourceHandler("/myResources/**")
            // 添加文件放置的目录
            .addResourceLocations("classpath:/myResources/");
    }
}

其中addResourceHandler()addResourceLocations()两个方法中参数为动态参数,可以添加多个路径。到此配置完成,因为配置了热部署(点击进入热部署配置),所以我们直接F5刷新浏览器即可,而无需重启程序,刷新后显示:
在这里插入图片描述
则说明配置成功!

发布了29 篇原创文章 · 获赞 214 · 访问量 9766

猜你喜欢

转载自blog.csdn.net/Qizhi_Hu/article/details/105557594