学习目标(深入Web原理)
- SpringMVC自动配置
- 简单功能介绍
- 请求参数处理
- 数据影响与内容协商
- 视图解析与模板引擎
- 拦截器
- 跨域
- 异常处理
- 原生Servlet
- 敲入式Web容器
- 定制化原理
SpringMVC自动配置
- 内容协商视图解析器和BeanName视图解析器
- 静态资源(包括webjars)
- 自动注册(Converter\GenericConverter\Formatter)
- 支持HttpMessageConverters
- 自动注册(MessageCodesResolver国际化用)
- 静态index.html页支持
- 自定义Favicon
- 自动使用ConfigurableWebBindingInitializer(DataBinder负责将请求数据绑定到JavaBean上)
简单功能介绍
静态资源访问
- 1.静态资源目录
在类路径下有这些目录static或public或resources或META-INF/resources,都可以用于存放图片等静态资源,然后进行访问
访问方式:当前项目根路径/+静态资源名- 1.将资源存放入目录
- 2.进入网址后缀是访问的资源名称
访问成功
为什么可以直接访问静态资源,而不是发起请求?
做个测试:现在做一个请求,就叫做海上.png
那么在这样的情况下,是找动态请求,还是找静态资源呢?(如果是动态请求就会返回“aaa”),结果:
访问静态资源原理:静态映射/**,只需要写资源名就能自动地找资源;请求进来的时候先去找Controller看能不能处理。不能处理的所有请求有都交给静态资源处理器。静态资源就去资源目录找数据;找到,就呈现内容;找不到,就是404
- 1.将资源存放入目录
- 2.静态资源访问前缀
- 修改静态资源访问路径:在配置文件中,利用spring.mvc.static-path-pattern=/自定义前缀名/**
修改静态资源访问路径的应该用场景:写了一个web应用,里面有很多的静态资源还有很多动态请求,以及拦截器,比如登录拦截器等等,登陆以后才能够进行动态的请求,没有登陆就会拦截所有/*的访问,但其实有时候一些资源不需要登陆以后才能访问,所以就在资源前加一个前缀,然后让拦截器放行指定前缀的访问
默认无前缀(即:/**)
通过在配置文件中利用spring.mvc.static-path-pattern=/自定义前缀名/*指定即可
配置过后,就可以对静态资源进行访问,访问路径就是/res/资源名
- 指定静态资源文件
指定过后,就用这个指定的文件存放静态资源
指定方式:spring.resources.static-locations: classpath: [/文件名/]
指定之后,就无法再访问其他目录下的静态资源了
- 修改静态资源访问路径:在配置文件中,利用spring.mvc.static-path-pattern=/自定义前缀名/**
欢迎页支持(欢迎页放到静态资源下,服务器加端口号访问时所呈现的页面,使用欢迎页,必须使用/**的映射方式)
springboot支持两种方式的欢迎页:1.static;2.模板
- 1.给静态资源路径下放一个index.html
- 可以配置静态资源路径
- 但是不乐意配置静态资源的访问前缀,否则导致index.html不能被默认访问
- 2.编写controller能够处理/index
自定义Favicon
每个网站访问前的访问图标,将图标放到静态资源文件下,将图标命名为:favicon.ico即可,访问时会自定识别加载
如果不能加载注意浏览器禁用缓存要勾选上;并且在第一次加载时,要更换浏览器
静态资源配置原理
- SpringBoot启动默认加载xxxAutoConfiguration类(自动配置)
- SpringMVC自动配置类WebMvcAutoConfiguration,生效
- 给容器中配置了什么?
- HiddenHttpMethodFilter兼容Rest风格,表单提交get等请求
- OrderedFormContentFilter表单内容过滤器
- 配置文件的相关属性和什么进行了绑定
- WebMvcProperties与spring.mvc进行了绑定
- ResourceProperties与spring.resources进行了绑定
配置类只有一个有参构造器
有参构造器中所有参数的值,都会从容器中确定
资源处理的默认规则
默认可以访问静态资源
resources.add-mappings: true;当属性值为false时,所有的静态资源配置都不生效,任何资源都无法被访问
静态资源可以配缓存,resources.cache.period: 100;这是以秒为单位的,默认资源存储100秒;这个的作用是,在这个时间之内,如果在来访问这个数据,就不要再发送请求了,而是直接将这个数据从缓存中调出来
欢迎页的处理规则
HandlerMapping:处理器映射。保存了每一个handler能处理那些请求
标签:Web,请求,静态,访问,开发,resources,资源,前缀 From: https://www.cnblogs.com/hezhipeng/p/16985985.html