简单功能分析
A. 静态资源访问
在 官方文档 中说,Spring Boot 给我们提供静态资源的目录,比如说你的图片、视频、JS、CSS文件,都可以放到文档中说的目录下,这样就可以直接访问这些资源了。

static 是我们用 Spring Initializr 创建的时候,自动创建的。

然后我们现在建立文档中说的其他文件夹。

最终的文件如下👇

现在我在这些文件夹里放几张图片。

然后我们来启动服务器,看看能否访问这些静态资源。





可以看到,所有的静态资源都是能被访问的。
因此,只要静态资源在类路径下, /static (or /public or /resources or /META-INF/resources,那我们就可以通过访问:当前项目根路径/ + 静态资源名, 访问到静态资源。
现在我们再做一个测试。看看动态请求合静态资源重名会怎么样。

如果直接访问 1.png 的话,就会直接访问到对应的图片,但是现在我们定义了一个动态的请求,那么再访问相同的路径,就无法再直接访问到对应的静态资源了,而是返回的动态请求。

为什么会这样呢?
静态资源映射的是所有资源,/**,一个请求进来,会先去找 Controller,如果 Controller 不能处理,就会交给静态资源处理器。静态资源处理器就会在默认的几个文件夹中找,如果静态资源都没有找到,就会是 404。
所以,我们可以设置让访问静态资源都加一个前缀,静态资源是默认无前缀的。

通过设置 static-path-pattern ,我们可以改变访问静态资源的前缀,现在所有的静态资源都需要加一个前缀 res/ 才能访问。


同样,我们可以修改静态资源的默认访问路径,之前只能找到在默认的那几个文件夹里的静态资源,现在我们将静态资源的文件夹改成了 /pri。

现在只有在 pri 包内的静态资源才可以被访问到。

我们来做个测试。


但是我们再来访问一下 pri 包下的静态资源。

访问成功。
如果你还需要访问更多的包,可以把路径改成下面这样👇

现在我们 public 包下的资源也可以访问了。


B. 欢迎页面
官方文档 中说,Spring Boot 支持静态和模板两种方式的欢迎页面,如果是静态资源,则可以将 index.html 放到静态资源路径下。第二种方式就是会在 Controller 中找 index 请求,如果找到了就将它作为欢迎页面。

我们可以做个测试,先在 static 中写一个 index.html。同时我们需要把这个包开放出来,因为之前我们设置了只能访问 pri 和 public 包。


然后我们访问一下localhost。

居然没有访问到欢迎页面,原因是我们在 yaml 配置文件中设置了访问的前缀。
我们现在直接把前缀也注释掉。

可以看到,欢迎页面被访问到了。

按照官方文档的解释,我们只要将 index.html 放在我们配置的静态资源的位置其实就是可以访问的。


所以说,我们可以在静态资源路径下放 index.html,可以配置静态资源的访问路径,但是不可以配置静态资源的访问前缀,否则 index.html 就不会是默认的访问页面。
SpringBoot静态资源与欢迎页
本文介绍如何在SpringBoot中配置和访问静态资源及欢迎页面。包括设置静态资源访问路径、前缀以及处理静态资源与动态请求冲突的方法。
3077

被折叠的 条评论
为什么被折叠?



