1. 静态资源访问
1.1 静态资源目录
只要静态资源放在类路径下访问:
/static
or /public
or /resource
or /META-INF/resource
当前项目根路径 /+静态资源名
项目启动后,输入资源路径localhost:8080/1.jpeg
就可以访问到这张图片
注意:当controller层发送一个与1.jpeg相同的请求时,可能返回的结果不同
项目启动后,重新访问 localhost:8080/1.jpeg
会发现返回的是hello,而不是之前的图片.
原因:
静态资源映射 /**,拦截所有请求
请求进来,先去找controller看能不能处理,能处理就直接进行处理
不能处理的所有请求又都交给静态资源处理器.
然后去看静态资源能不能找到,如果能找到,就访问,否则返回404状态码
1.2 静态资源访问前缀
默认是无前缀的
如果想要指定的前缀,则会进行相应配置
我这个是yml文件,和properties文件格式不一样
spring:
mvc:
#
static-path-pattern: /res/**
当前项目+static-path-patten+静态资源名= 去静态资源文件夹下找
我们在进行访问 localhost:8080/1.jpeg
加上res再次进行访问localhost:8080/res/1.jpeg
可以看出,这次加了res前缀后就可以访问到静态资源了.
2. 欢迎页支持
静态资源路径下 的index.html
启动项目后,访问localhost:8080
后直接会展示这个页面
3. 自定义favicon
就是网页栏中显示的小图标,如B站的图标
只要我们往静态资源路径下放入一张图片,命名为 favicon.ico
,在启动项目后,就可以显示出自己的图标了.
如果无法显示,按住Ctrl+F5键强制刷新一下就好了
4. 静态资源配置原理
- SpringBoot启动默认加载xxxAutoConfiguration类(自动配置类)
- SpringMVC功能的自动配置类WebMvcAutoConfiguration生效
@AutoConfiguration(
after = {DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class}
)
@ConditionalOnWebApplication(
type = Type.SERVLET
)
@ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class})
@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
@AutoConfigureOrder(-2147483638)
- 给容器中配了什么
@Configuration(
proxyBeanMethods = false
)
@Import({EnableWebMvcConfiguration.class})
@EnableConfigurationProperties({WebMvcProperties.class, WebProperties.class})
@Order(0)
- 配置文件的相关属性和xxx进行了绑定,
WebMvcProperties==“spring.mvc”
WebProperties == “spring.web”
5. 资源处理的默认规则
在yml文件里面进行配置
默认规则
spring:
resource:
add-mappings: true
禁用所有静态资源规则
spring:
resource:
add-mappings: false