以前在咱們開發項目,作view試圖模塊時,咱們一般是使用JSP,可是隨着技術的發展,以及springboot的使用日漸增多,在springboot的項目中已經漸漸再也不使用JSP去做爲view,而是逐漸採用了Thymeleaf這項技術.html
簡單地說,Thymeleaf是一個html模板引擎,提供了與Spring MVC進行整合的API,可做爲MVC架構中Web應用的View層.spring
而在springboot中導入Thymeleaf的方法也在上文--thymeleaf導入中有所介紹,也不作過多贅述.segmentfault
可是有一點須要注意:可能在開發過程當中,你們會以爲每次更改頁面後,都要從新重啓服務,非常麻煩與反人類,能夠經過配置熱啓動來改善.後端
spring.thymeleaf.cache=false
cache是thymeleaf帶有的一個緩存區,咱們將它設置爲false便可不須要每次重啓服務,直接刷新界面就能夠(但要注意服務端的代碼修改的話仍是須要重啓服務器)數組
但也不要一味的認爲cache的設置就是麻煩的,它主要的做用是要在項目上線時設置爲true(不設置默認爲true),這樣它會提供一個緩存區,不用每次都向服務器請求數據,能夠有效的提升響應速度.緩存
關與Thymeleaf標籤的具體使用在官網中的文檔中均可以找到,本文只是說一些經常使用到的標籤,詳解還請參照官方文檔.springboot
在thymeleaf中數據的循環迭代使用的是th:each="x1:${x2}",
做用能夠取出域中的數據(數組/集合)去進行循環,一般配合th:text="${x1.x3}"使用.服務器
其中x2爲域中存儲的數據名稱;x1爲本身定義的名稱,用於在頁面中使用數據;x3爲x2中的屬性,要和get方法名一致.restful
代碼以下:架構
<tr th:each="g:${list}"> <td th:text="${g.id}"></td> <td th:text="${g.name}"></td> </tr>
在thymeleaf中超連接使用th:href="@{x1(x2=${x3.x4})}",
x1爲超連接指向的路徑;x2爲本身命名的名稱;x3,x4爲上邊數據迭代中的th:text="${x1.x3}"x1和x3.
代碼以下:
<a th:href="@{/goods/doDeleteById(id=${g.id})}"> delete </a>
關於超連接指向地址,還提供了restful風格的寫法,
平時咱們所寫代碼地址上帶請求數據通常爲:a/b/c?id=x
而restful這種風格爲:a/b/c/{id}
代碼以下:
<a th:href="@{/goods/doFindById/{id}(id=${g.id})}"> update </a>
在這種語法中,{id}爲一個變量表達式,由後面()內的內容補充,若是咱們但願在後端的Controller類的方法參數中得到傳遞的參數,就須要加@PathVariable描述參數.
在thymeleaf中提交表單採用th:action="@{x1}"
x1爲表單所要提交至的地址.
代碼以下:
<form th:action="@{/goods/doUpdateGoods}" method="POST"> <input type="text" name="name" th:value="${goods.name}">
當你以爲上述代碼若是顯示時有不少屬性,而每一個屬性都須要${對象名.屬性名}的方式來顯示會很重複,想把對象名直接提取出來,能夠經過在表單上加th:object,
代碼以下:
<form th:action="@{/goods/doUpdateGoods}" method="POST" th:object="${goods}"> <input type="text" name="name" th:value="${name}">
1)當咱們的url地址沒有以"/"開頭時,默認這個內容要替換到如今地址欄url最後一個"/"後的內容進行拼接.
2)請求轉發:return "forward:doGoodsUI";重定向:return "redirect:/goods/doGoodsUI";請求轉發因爲是服務端內部轉發因此能夠不寫"/",直接跳轉;而重定向因爲是二次請求二次響應,且能夠跳轉至別的資源甚至是別的服務器,因此須要寫絕對地址,必須以"/"開頭!