SpringBoot-静态资源映射

SpringBoot-静态资源映射

静态资源映射规则

在springBoot中的静态资源的映射是通过SpringMVC中的resourceHttpRequestHandler来进行实现的。在该请求映射器中默认规定了,SpringBoot会将classPath或者ServletContext下的/static (/public、/resources 或 /META-INF/resources)目录中,存放静态资源。并且其默认规定了所有的静态资源访问都被映射到/**,也就说,只要我们在访问静态资源时,只要是只需要在确保静态资源放在合理的位置,那么就可以通过类路径+文件名的形式来进行访问到该静态资源。
例如:
我现在在类路径下新建一个public目录,在其下放置一个AAA.jpg的图片静态资源。此时当我们启动服务后,就可以通过url:localhost:8001/AAA.jpg拿到这个静态资源。
图 1

图2

在官网中也同样说明,“在一个独立的web应用中,来自容器的默认的Servlet是开启的,并且该方式会充当一个回退支援。”
这句话的解释:我们知道在spring中当我们通过url的形式来访问资源时,首先这个请求会被spring的dispatchServlet给接收,此时会通过HanderManping和HandlerAdapter来在spring中查找是否有相应的控制器。如果找到,则会直接执行该控制器,而不会再通过resourceHttpRequestHandler来查找相应的静态资源。通俗的来说也就是,我们通过url访问时,首先会检查是否有同名控制器,即此时会优先处理servlet请求,而不会处理ServletContext下的静态资源请求。

例子:
现在我在Controller中建立一个处理器请求,该请求映射路径为/AAA.jpg
图3
此时再次请求相同路径(本意是访问静态资源)http://localhost:8001/AAA.jpg:
图4

[注]
(1)当然我们也可以修改SpringBoot中默认的资源映射路径,这也是常用的方式,因为修改后,可以避免在今后如果添加拦截器时,防止将静态资源给拦截了。修改的方式:

//默认
spring.mvc.static-path-pattern=/resources/**
//自定义
spring.mvc.static-path-pattern=/myStatic/**

那么今后就需要在访问时,以上述例子为例:当前项目+自定义映射路径+静态资源名即localhost:8001/myStatic/AAA.jpg

(2)我们也可以通过spring.resources.static-locations 属性来自定义静态资源的位置(使用一个目录位置列表替换默认值)。根 Servlet context path / 自动作为一个 location 添加进来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值