springBoot中Thymeleaf 比jsp好用多了!

在這裏插入圖片描述

什麼是jsp

經歷過傳統的java Web開發的人都知道jsp是可以響應用戶請求的htnl頁面。我們都知道HTML頁面是靜態的,爲什麼jsp能夠部署於服務器上並且響應用戶請求呢?因爲jsp在HTML中嵌入了java代碼。

所以我們可以這樣認爲:jsp = java + HTML

因爲jsp頁面中摻雜着後臺的代碼,使得前後端整體分離的思想不能很好的實現,可能前端jsp頁面的一個簡單的java問題也會導致項目不能啓動,整體的開發便捷程度不是很好,於是在springBoot中推薦使用新的好用的模板引擎:**Thymeleaf **

Thymeleaf 簡介

Thymeleaf 是一款用於渲染 XML/XHTML/HTML5 內容的模板引擎。類似 JSP,Velocity,FreeMaker 等,它也可以輕易的與 Spring MVC 等 Web 框架進行集成作爲 Web 應用的模板引擎。

與其它模板引擎相比,Thymeleaf 最大的特點是能夠直接在瀏覽器中打開並正確顯示模板頁面,而不需要啓動整個 Web 應用。

Thymeleaf 的優勢

Thymeleaf 是與衆不同的,因爲它使用了自然的模板技術。這意味着 Thymeleaf 的模板語法並不會破壞文檔的結構,模板依舊是有效的XML文檔。模板還可以用作工作原型,Thymeleaf 會在運行期替換掉靜態值。Velocity 與 FreeMarke r則是連續的文本處理器。

下面的代碼示例分別使用 Velocity、FreeMarker 與 Thymeleaf 打印出一條消息:

Velocity: <p>$message</p>
FreeMarker: <p>${message}</p>
Thymeleaf: <p th:text="${message}">Hello World!</p>

注意,由於 Thymeleaf 使用了 XML DOM 解析器,因此它並不適合於處理大規模的 XML 文件。

URL

URL 在 Web 應用模板中佔據着十分重要的地位,需要特別注意的是 Thymeleaf 對於 URL 的處理是通過語法 @{…} 來處理的。Thymeleaf 支持絕對路徑 URL:

<a th:href="@{http://www.thymeleaf.org}">Thymeleaf</a>
條件求值
<a th:href="@{/login}" th:unless=${session.user != null}>Login</a>
for循環
<tr th:each="prod : ${prods}">
      <td th:text="${prod.name}">Onions</td>
      <td th:text="${prod.price}">2.41</td>
      <td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
</tr>
頁面即原型

在 Web 開發過程中一個繞不開的話題就是前端工程師與後端工程師的協作,在傳統 Java Web 開發過程中,前端工程師和後端工程師一樣,也需要安裝一套完整的開發環境,然後各類 Java IDE 中修改模板、靜態資源文件,啓動/重啓/重新加載應用服務器,刷新頁面查看最終效果。

但實際上前端工程師的職責更多應該關注於頁面本身而非後端,使用 JSP,Velocity 等傳統的 Java 模板引擎很難做到這一點,因爲它們必須在應用服務器中渲染完成後才能在瀏覽器中看到結果,而 Thymeleaf 從根本上顛覆了這一過程,通過屬性進行模板渲染不會引入任何新的瀏覽器不能識別的標籤,例如 JSP 中的 ,不會在 Tag 內部寫表達式。整個頁面直接作爲 HTML 文件用瀏覽器打開,幾乎就可以看到最終的效果,這大大解放了前端工程師的生產力,它們的最終交付物就是純的 HTML/CSS/JavaScript 文件。

因此,相比於原始的基於jsp的java Web開發,使用Thymeleaf ,後端人員就會更多的關注與後臺代碼的實現,最後在靜態的HTML中添加少許的Thymeleaf 的相關接收、賦值參數的語句就可以實現完成的前後端交互,實現開發的簡單快速。

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