应无所住,而生其心
前言
关于如何搭建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刷新浏览器即可,而无需重启程序,刷新后显示:
则说明配置成功!