1. 程式人生 > 實用技巧 >springboot-02 SpringBoot Web開發

springboot-02 SpringBoot Web開發

SpringBoot Web開發

jar :webapp!

核心: 自動裝配

要解決的問題

  • 匯入靜態資源

  • 首頁面

  • jsp、模板引擎、Thymeleaf

  • 裝配擴充套件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?

https://www.webjars.org/

靜態資源對映預設會響應 專案根路徑下的所有請求

/**
 * 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

首頁定製

預設在類路徑下的檔案建立index.html都可以訪問。

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
      "classpath:/resources/", "classpath:/static/", "classpath:/public/" };

template檔案中的資源必須要通過 controller才可以訪問,template類似於WEB-INF檔案

藉助於 Thymeleaf依賴。從控制器轉發到 指定的tempalte檔案頁面。

匯入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";
}

頁面上使用 Thymeleagf 語法

在html頁面匯入 頭部資訊

 <html lang="en" xmlns:th="http://www.thymeleaf.org">

通過 使用thymeleaf語法獲取 作用域的各個值

所有的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>