SpringBoot之静态资源访问
SpringBoot之静态资源访问
1.springboot访问静态资源的⼏种⽅式
志愿者服务
(1)在src/main/resources/⽬录下创建
我的书屋
static⽂件夹
(2)在src/main/resources/⽬录下创建
resources⽂件夹带家的成语
(3)在src/main/resources/⽬录下创建
public⽂件夹
泰国最佳旅游时间(4)在src/main/resources/⽬录下创建
META-INF/resources⽂件夹
⽬录结构图:
访问⽅式:
不知道⼤家看到这⾥有没有注意我的⽬录结构在4个⽂件夹中我们都拥有相同名字的6.jpg图⽚,那么在springboot在这种特殊的情况访问的顺序是怎样的呢,优先级顺序/META-INF/resources>resources>static>public,感兴趣的可以⾃⼰试⼀下
看到这⾥我们会不会有⼀个疑问难道在springboot中我们想访问静态资源的时候必须以springboot创建指定名称⽂件夹来访问么,当然不是,下⾯向⼤家分享⼀个⾃定义⽂件夹访问静态资源的⽅式
(1):⾸先创建⼀个java类
创建⼀个java类继承WebMvcConfigurerAdapter类并且重写addResourceHandlers⽅法,参数引⽤Re
推特关键词
sourceHandlerRegistry类这个对象调⽤addResourceHandler以及addResourceLocations⽅法,从俩个⽅法名我们不难看出前者是提供资源访问路径⽽后者是本地项⽬路径,那到底是什么意思呢?下⾯举例说明⼀下:草莓种子怎么种
打印机错误
从上⾯俩张图⽚⼤家可以看出本地项⽬⽬录对应的就是addResourceLocations这个⽅法中传递的url参数,addResourceHandler⽅法就是资源访问url,在我们访问test/4.jpg时springboot会为我们在本地项⽬中找到testpicture这个⽂件夹中的4.jpg
看完⾃定义访问静态资源不知道⼤家有没有猜到为什么springboot可以访问/META-INF/resources,resources,static,public这4个⽂件夹下的静态资源,并且直接访问图⽚名称即可。下⾯我们来看⼀下springboot中的源码:
(1)打开WebMvcAutoConfiguration类找到addResourceHandlers⽅法:
从图中我们可以看到⾸先将变量staticPathPattern赋值然后将获取的值赋给资源访问路径⽅法,下⾯我们看⼀下staticPathPattern的值为什么
(2)打开WebMvcProperties类我们可以找到以下代码:
从图中我们可以看到值为/**这也就解释了为什么springboot在访问静态资源的时候只访问资源啊名称即可。
(3)下⾯我们继续查看WebMvcAutoConfiguration类:
(4)打开ResourceProperties类我们可以看到以下俩段代码:
在CLASSPATH_RESOURCE_LOCATIONS[] 这个数组中我们可以看到伤感孤独的句子
“classpath:/META-INF/resources/”, “classpath:/resources/”, “classpath:/static/”, “classpath:/public/”这4个属性,这就解释了为什么springboot可以直接访问1./META-INF/sources 3.static 4.public这4个⽂件夹下的静态资源