一、配置模板引擎
在之前所見到的信息顯示發現都是以 Rest 風格進行顯示,但是很明顯在實際的開發之中,所有數據的顯示最終都應該交由頁面完成,但是這個頁面並不是*.jsp 頁面,而是普通的*.html 頁面,而且最為重要的是,此處所使用的渲染的頁面采用的是模版方式 的顯示,而在 Java 開發行業,對於前台的顯示模版常見的一共有三類技術:FreeMarker、Velocity、beetle、jsp、thymeleaf(推薦使用),於是下 面就利用 thymeleaf 實現一個簡單的模版渲染操作。
1、導入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
2、Model 傳參
類似在 SpringMVC 的時代使用的是 ModelAndView 傳遞,SpringBoot 里面如果要傳遞直接在方法中定義一個 Model 參數即可。
@RequestMapping("/getUser") public String getUser(Model model) { model.addAttribute("userName","小明"); model.addAttribute("phone","123456"); return "user"; }
3、控制跳轉
使用“@Controller”注解,時執行該控制器的方法后會進行跳轉處理。如果現在要進行跳轉頁面的定義,有嚴格要求:在CLASSPATH路徑下(src/main/resources、src/main/view)必須建立有一個templates的目錄,在這個目 錄里面保存有thymeleaf的所有相關頁面,這些頁面可以按照文件目錄保存;resources下建立templates目前,創建user.html。
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>SpringBoot模版渲染</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> </head> <body> <p th:text="${userName}"/> <p th:text="${phone}"/> </body> </html>
4、yml中配置html后綴
spring:
thymeleaf:
suffix: .html
5、驗證
啟動,訪問:http://192.168.1.100:8082/springboot-demo/getUser
二、熱部署配置
1、添加依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
說明:
(1) devtools可以實現頁面熱部署(即頁面修改后會立即生效,這個可以直接在application.properties文件中配置spring.thymeleaf.cache=false來實現),
實現類文件熱部署(類文件修改后不會立即生效),實現對屬性文件的熱部署。
即devtools會監聽classpath下的文件變動,並且會立即重啟應用(發生在保存時機),注意:因為其采用的虛擬機機制,該項重啟是很快的
(2)配置了后在修改java文件后也就支持了熱啟動,不過這種方式是屬於項目重啟(速度比較快的項目重啟),會清空session中的值,也就是如果有用戶登陸的話,項目重啟后需要重新登陸。
默認情況下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public這些文件夾下的文件修改不會使應用重啟,但是會重新加載(devtools內嵌了一個LiveReload server,當資源發生改變時,瀏覽器刷新)。
2、配置熱啟動和監聽目錄
devtools的配置
在application.properties中配置spring.devtools.restart.enabled=false,此時restart類加載器還會初始化,但不會監視文件更新。
在SprintApplication.run之前調用System.setProperty(“spring.devtools.restart.enabled”, “false”);可以完全關閉重啟支持,配置內容:
#熱部署生效 spring.devtools.restart.enabled: true #設置重啟的目錄 #spring.devtools.restart.additional-paths: src/main/java #classpath目錄下的WEB-INF文件夾內容修改不重啟 spring.devtools.restart.exclude: templates/**
3、IDEA配置自動編譯
當我們修改了Java類后,IDEA默認是不自動編譯的,而spring-boot-devtools又是監測classpath下的文件發生變化才會重啟應用,所以需要設置IDEA的自動編譯:
(1)File-Settings-Compiler-Build Project automatically
(2)ctrl + shift + alt + /,選擇Registry,勾上 Compiler autoMake allow when app running
4、測試
- 修改類–>保存:應用會重啟
- 修改配置文件–>保存:應用會重啟
- 修改頁面–>保存:應用不會重啟,但會重新加載,頁面會刷新(原理是將spring.thymeleaf.cache設為false,參考:Spring Boot配置模板引擎)