SpringBoot中静态资源目录的问题:
首先在web的开发中,静态资源的访问是必不可少的,如:图片、js文件、css文件等,对于这些资源的访问,SpringBoot都提供了很好的支持,基本使用默认配置就能满足开发需求。在传统的web项目中,这些静态的资源都是放在WEB-INF目录下面的,而我们现在所使用的SpringBoot是一个“约定大于配置”的框架,所以我们对于这些静态的资源只需要按照约定去放置就可以了,SpringBoot框架默认提供的静态资源目录的位置需放置于classpath下,且要求了命名的规范,目录名应遵守的命名规范如下:
- /static
- /public
- /resources
- /META-INF/resources
其中,classpath指的是项目中src/main/resources目录,这四个目录在项目中的结构如图所示:
每当我们有不同的目录之后往往会涉及到一个叫做优先级的问题,那我们的这四个存放的优先级又是什么样子的呢?
当我们在四个目录下面同时存放了一个index.html然后我们去访问的时候就可以发现,我们首先访问的是 /META-INF/resources/下的资源,依次执行下去我们可以得到的优先级顺序为:/METAINF/resources/
>/resources/
>/static/
>/public/,这个的访问顺序就是系统默认的访问优先级。
需要注意的是:这几个目录的名称是不可以写错的,使用的时候直接在地址栏中输入资源的名称就可以了。如:在static文件夹中存在了一个my.js文件然后在地址栏输入:http://localhost:8080/my.js就可以直接访问到这个资源了
补充:大部分项目在开发时需要使用页面模板(如 freemarker 模版),这时候只需要在 resources 目录中创建 templates 目录来存放模板文件即可,项目在运行过程中会自动去该目录下寻找匹配的模板进行加载显示。