springboot-02 SpringBoot Web开发
jar :webapp!
核心: 自动装配
要解决的问题
-
导入静态资源
-
首页面
-
-
装配扩展springMVC
-
增删改查练习
-
拦截器
-
国际化!(了解)
静态资源
WebMvcAutoConfiguration配置类中
public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); return; } Duration cachePeriod = this.resourceProperties.getCache().getPeriod(); CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl(); if (!registry.hasMappingForPattern("/webjars/**")) { customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/") .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl)); } String staticPathPattern = this.mvcProperties.getStaticPathPattern(); if (!registry.hasMappingForPattern(staticPathPattern)) { customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern) .addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations())) .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl)); } }
什么是webjars?
静态资源映射默认会响应 项目根路径下的所有请求
/** * Path pattern used for static resources. */ private String staticPathPattern = "/**";
分别映射到类路径下的这些 静态资源文件中
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" };
静态资源文件优先级
从大到小 resource > static(默认) > public
当前springboot版本为 2.1.7
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" };
template文件中的资源必须要通过 controller才可以访问,template类似于WEB-INF文件
导入Thymeleaf依赖
<!--Thymeleaf 默认指定 2.x版本。已经不适用--> springboot2.2.x本版中 默认Thymeleaf本版为 3.x <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-java8time</artifactId> </dependency>
通过控制器 返回 index字符串。 模板自动拼接 前后缀。映射到 tempalte/index.html中
// 使用 controller 响应跳转 index.html // 必须借助于 模板引擎的支持! @GetMapping("/toindex") public String indexPage() { return "index"; }
在html页面导入 头部信息
<html lang="en" xmlns:th="http://www.thymeleaf.org">
所有的html元素都可以被thymeleaf接管 th:元素名
<h1 th:text="${msg}">首页 thymeleaf</h1>
简单赋值、循环。
<!--th:text 赋值--> <h1 th:text="${msg}">首页 thymeleaf</h1> <!--th:utext 内容原样输出--> <h1 th:utext="${msg}">首页 thymeleaf</h1> <!--遍历 方法一--> <h3 th:each="str: ${list}" th:text="${str}"></h3> <!--方法二--> <h3 th:each="str: ${list}">[[${str}]]</h3>