简单功能分析
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
就不会是默认的访问页面。