springboot-02 SpringBoot Web開發
阿新 • • 發佈:2020-07-24
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>