SpringBoot--------Web開發([夢學谷]四)

32 看完

https://i.xue.taobao.com/my/learning.htm?spm=a2174.7365761.0.0.oxhqUo

第4章 Spring Boot 的Web開發
Web 開發是項目實戰中至關重要的一部分,Web開發的核心內容主要包括嵌入的Servlet容器和SpringMVC 
Web開發官方文檔:
https://docs.spring.io/spring-boot/docs/2.0.6.RELEASE/reference/htmlsingle/#boot-features-spring-mvc

4.1 Web開發支持
Spring Boot 爲 Web 開發提供了 spring-boot-starter-web 啓動器作爲基本支持,爲我們提供了嵌入的
Tomcat 以及 Spring MVC 的依賴支持。(參考:pom.xml)
也提供了很多不同場景的自動配置類,讓我們只需要在配置文件中指定少量的配置即可啓動項目。自動配置
類存儲在 spring-boot-autoconfigure.jar 的 org.springframework.boot.autoconfigure 包下。

思考自動配置原理: 自動配置場景 SpringBoot 幫我們配置了什麼?是否修改?能修改哪些配置?是否可以
擴展?……

自動配置類舉例:
文件名可以看出

SpringMVC配置 : WebMvcAutoConfiguration 和 WebMvcProperties

內嵌 Servlet 容器 : ServletWebServerFactoryAutoConfiguration 和 ServerProperties

上傳文件的屬性 :MultipartAutoConfiguration 和 MultipartProperties

JDBC : DataSourceAutoConfiguration 和 DataSourceProperties

等等…………

4.2 靜態資源的映射規則
對靜態資源的映射規則, 可通過分析 WebMvcAutoConfiguration 自動配置類得到
4.2.1 webjars 資源映射
在 WebMvcAuotConfiguration.addResourceHandlers() 分析webjars 資源映射

1. 所有 /webjars/** 請求,都去 classpath:/META-INF/resources/webjars/ 目錄找對應資源文件
2. webjars:以jar包的方式引入靜態資源
webjars官網: https://www.webjars.org/

3. 在官網打開資源文件的依賴配置信息,然後粘貼到 pom.xml 中 

4. 訪問 localhost:8080/webjars/jquery/3.3.1/jquery.js 會在下面路徑中查找


4.2.2 其他靜態資源映射
在 WebMvcAuotConfiguration.addResourceHandlers() 分析訪問其他資源映射

staticPathPattern 處理其他訪問的靜態路徑,從 WebMVCProperties 構造器中獲取到 /**

ResourceProperties 根據請求查找資源文件, 從以下 四個路徑 中 查找( 靜態資源目錄 )

總結:
當接受到 /** 請求訪問資源時, 會被映射到下面4個 類路徑下的靜態資源目錄中查找

訪問 localhost:8080/style.css 會在上面四個靜態資源路徑中查找文件

4.2.3 歡迎頁映射
在 WebMvcAuotConfiguration.welcomePageHandlerMapping() 分析 歡迎頁映射

getWelcomePage() 方法獲取 歡迎頁面 可存儲路徑

分析後, 會從 4個靜態資源目錄 + 根路徑 / 中 查找 index.html 頁面

會在靜態資源目錄下 與 根路徑查找 (按該順序) index.html頁面; 收到 "/**" 請求映射
訪問localhost:8080/ 會在上面5個目錄中查找 index.html 頁面(因爲/也屬於 /** )
4.2.4 圖標映射
Spring Boot 會在靜態資源目錄下 與 根路徑(按該順序) 查找 faicon.ico 頁面;
如果存在這樣的文件,Spring Boot 會自動將其設置爲應用圖標。

4.3 Thymeleaf 模板引擎
Spring Boot 官方不推薦使用JSP,因爲內嵌的 Tomcat 、Jetty 容器不支持以 jar 形式運行 JSP。Spring Boot
中提供了大量模板引擎,包含 Freemarker、Mastache、Thymeleaf 等。 而 Spring Boot 官方推薦使用
Thymeleaf 作爲模板引擎, 因爲 Thymeleaf 提供了完美的 SpringMVC 的支持。

4.3.1 引入 Thymeleaf
pom.xml 加入 Thymeleaf 啓動器

4.3.2 使用 Thymeleaf
模板文件放在哪裏 ?

通過上面分析發現, 將 HTML 頁面放到 classpath:/templates/ 目錄下, Thymeleaf 就能自動渲染

導入 Thymeleaf 的名稱空間
在 html 頁面加上以下名稱空間, 使用 Thymeleaf 時就有語法提示。

演示 Thymeleaf 語法


4.3.3 Thymeleaf 語法
4.3.3.1 常用屬性
參考 Thymeleaf 官方文檔 10 Attribute Precedence

4.3.3.2 標準表達式語法
參考 Thymeleaf 官方文檔 4 Standard Expression Syntax 

 

4.3.4 實例代碼演示
4.3.4.1 聲明與引入公共片段


練習:將項目中的 公共模塊抽取出來到 public.html 中
4.3.4.2 迭代 th:each
常用迭代方式

獲取迭代狀態

練習 : 供應商管理 查詢頁面

4.3.4.3 條件判斷

4.3.4.4 顯示標籤體內容

4.3.4.5 th:object 直接取出對象
使用th:object 直接取出對象,然後寫對象裏的屬性名即可獲取屬性值

4.4 SpringBoot 熱部署
默認情況下, 在開發中我們修改一個項目文件後,想看到效果不得不重啓應用,這會導致浪費大量時間 ,我
們希望不重啓應用的情況下,程序可以自動部署(熱部署)。

4.5 分析 SpringMVC 自動配置
Spring Boot 爲 Spring MVC 提供了適用於多數應用的自動配置功能( WebMvcAutoConfiguration )。
在Spring默認基礎上,自動配置添加了以下特性:

如果想保留 Spring Boot MVC的特性,而且還想擴展新的功能(攔截器, 格式化器, 視圖控制器等),你可以在你自
定義的 WebMvcConfigurer 類上增加 @Configuration 註解。
如果你想全面控制SpringMVC(也就是不使用默認配置功能), 你在自定義的Web配置類上添加
@Configuration 和 @EnableWebMvc 註解。

4.6 擴展 SpringMVC 功能
擴展一個視圖解析器功能

4.7 全面控制 SpringMVC
如果你想全面控制SpringMVC(SpringBoot對SpringMVC的自動配置都廢棄), 在自定義的Web配置類上添加
@Configuration 和 @EnableWebMvc 註解。


4.8 總結 SpringMVC 配置
在Spring Boot中自已配置組件的時候,先看容器中有沒有公司自已配置的(@Bean、@Component),如果
有就用公司自已配置的; 如果沒有,才自動配置. 在Spring Boot中會有非常多的xxxConfigurer幫助我們進行擴展配置. 在Spring Boot中會有很多的xxxCustomizer幫助我們進行定製配置.

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章