上一篇:《??SpringBoot对Spring MVC都做了哪些事?(一)??》静态内容默认情况下,SpringBoot从类路径或ServletContext的根目录中名为/static(或/public或/resources或/META-INF/resources)的目录中读取目录提供静态内容。它使用SpringMVC中的ResourceHttpRequestHandler,因此您可以通过添加自己的WebMVCConfiguer并覆盖addResourceHandlers方法来修改该行为。在一个独立的web应用程序中,容器中的默认servlet也被启用并充当后备,如果Spring决定不处理它,则从ServletContext的根提供内容。大多数时候,这不会发生(除非你修改默认的MVC配置),因为Spring总是可以通过DispatcherServlet来处理请求。默认情况下,资源映射到/**,但您可以通过spring.mvc.static-path-pattern属性进行调整。例如,可以通过以下方式将所有资源重新定位到/resources/**:spring:mvc:static-path-pattern:"/resources/**"您还可以通过spring.web.resources.static-locations属性执行集静态资源的位置。Servlet的根上下文路径“/”也会自动添加为一个位置。除了前面提到的“标准”静态资源位置之外,Webjars内容还有一个特例。如果以webjars格式打包,则路径在/webjars/**中的任何资源都是从jar文件提供的。SpringBoot还支持SpringMVC提供的高级资源处理功能,允许使用缓存破坏静态资源或为webjars使用版本无关的url等用例。要为webjars使用版本不确定的url,您需要添加Webjars-locator-core依赖项。然后声明你的webjar。以jQuery为例,添加“/Webjar/jQuery/jQuery.min.js”得到“/Webjar/jQuery/x.y.z/jQuery.min.js”,其中x.y.z为Webjar版本。欢迎页面SpringBoot支持静态和模板欢迎页面。它首先在配置的静态内容位置查找index.html文件。如果没有找到,它会寻找一个索引模板。如果找到其中之一,它将自动用作应用程序的欢迎页面。路径匹配和内容协商SpringMVC可以将传入的HTTP请求映射到处理程序,方法是查看请求路径并将其映射到应用程序中定义的映射(例如,控制器方法上的@GetMapping注释)。默认情况下,SpringBoot选择禁用后缀模式匹配,这意味着像“GET/projects/spring-boot”这样的请求。json"将不匹配@GetMapping("/projects/spring-boot")映射。这被认为是SpringMVC应用程序的最佳实践。此功能主要是在过去当HTTP客户端没有发送正确的“接受”时请求标头;我们需要确保向客户端发送正确的内容类型。如今,内容协商更加可靠。还有其他方法可以处理HTTP客户端不一致地发送正确的“接受”请求标头。而不是使用后缀匹配,我们可以使用查询参数来确保诸如“GET/projects/spring-boot?”之类的东西format=json”将被映射到@GetMapping(“/projects/spring-boot”):示例:@GetMapping("/format")publicMap
