SpringBoot 静态资源映射的两种方式

一、webjars方式映射静态资源文件

我们之前使用Maven构建一个Web项目时,在main目录下会存在一个webapp的目录,我们以前都是将所有的页面或静态资源导在这个目录下,但现在使用SpringBoot项目我们应该将静态资源文件放在哪里呢?

SpringBoot默认的打包方式是jar(Java归档),那么这种方式SpringBoot能不能来给我们写页面呢?当然是可以的,但是SpringBoot对于静态资源放置的位置,是有规定的

我们先来看一下这个静态资源映射规则,SpringBoot中,SpringMVC的web配置都在org.springframework.boot.autoconfigure.web.servlet包下的WebMvcAutoConfiguration 这个配置里面,我们找到addResourceHandlers这个方法,该方法用于处理webjars方式的静态资源映射
在这里插入图片描述
阅读一下源码,所有的 /webjars/** , 都需要去 classpath:/META-INF/resources/webjars/ 找对应的资源,那什么是webjars呢?

webjars本质就是以jar包的方式引入我们的静态资源 , 我们以前要导入一个静态资源文件,直接导入即可。使用SpringBoot可以使用webjars,官网:https://www.webjars.org/,比如要使用jQuery,只需要导入jQuery对应版本的pom依赖即可
在这里插入图片描述
例如,我们现在在pom文件中引入了依赖
在这里插入图片描述
启动项目,访问一下http://localhost:8080/webjars/jquery/3.4.1/jquery.js,可以看到已经引入成功
在这里插入图片描述

二、默认资源映射

/** , 访问当前的项目任意资源,它会去找 resourceProperties 这个类,我们可以点进去看一下:
在这里插入图片描述
resourceProperties 设置了和我们静态资源有关的参数,this.staticLocations = CLASSPATH_RESOURCE_LOCATIONS; 这里面指向了它会去寻找资源的文件夹;即上面数组的内容,四种形式:

"classpath:/META-INF/resources/", 
"classpath:/resources/",
"classpath:/static/", 
"classpath:/public/",

四种形式的优先级:META/resources > resources > static > public

再向下看一个方法;它还会在根路径下去寻找资源
在这里插入图片描述

"/" :当前项目的根目录

我们可以在对应的目录下创建对应的文件夹来存放我们的静态资源文件,这里不做展示了

另外,我们再来看一下迎页的映射,也就是我们的首页
在这里插入图片描述
欢迎页,静态资源文件夹下的所有index.html页面;被 /** 映射。

比如我访问 localhost:8080/ ,就会找静态资源文件夹下的 index.html

三、两种方式的选择

  • 我们使用第三方的库时,建议使用webjars的方式,通过动态版本号(webjars-locator 的方式)来使用(因为第三方库在项目开发中变动频率很小,即便是变动也是版本号的修改)
    版本号(webjars-locator 的方式)来使用(因为第三方库在项目开发中变动频率很小,即便是变动也是版本号的修改)
  • 项目素材文件建议放到 classpath:/static (或其他)目录中,打包在项目中,通过CMS维护的一些图片和资源,我们使用配置引用到具体的磁盘绝对路径来使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值