springboot(二):thymeleaf模板開發

概述

Thymeleaf是一款用於渲染XML/XHTML/HTML5內容的模板引擎。相似JSP,Velocity,FreeMaker等,它也能夠輕易的與Spring MVC等Web框架進行集成做爲Web應用的模板引擎。與其它模板引擎相比,Thymeleaf最大的特色是可以直接在瀏覽器中打開並正確顯示模板頁面,而不須要啓動整個Web應用。html

好了,大家說了咱們已經習慣使用了什麼 velocity,FreMaker,beetle之類的模版,那麼到底好在哪裏呢? 比一比吧 Thymeleaf是不同凡響的,由於它使用了天然的模板技術。這意味着Thymeleaf的模板語法並不會破壞文檔的結構,模板依舊是有效的XML文檔。模板還能夠用做工做原型,Thymeleaf會在運行期替換掉靜態值。Velocity與FreeMarker則是連續的文本處理器。java

thymeleaf開發

  • 訪問 http://start.spring.io 填寫項目基本信息,而後選擇thymeleaf依賴
  • 下載zip包,而後導入eclipse
  • 新建index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
    <head>
        <title>Hello World!</title>
    </head>
    <body>
        <h1 th:inline="text">Hello springboot v.2</h1>
        <p th:text="${hello}"></p>
    </body>
<html>
  • 編寫controller
@Controller
publicclass TemplateController {
    @RequestMapping("/")
    public String helloHtml(Map<String,Object> map){
       map.put("hello","from TemplateController.helloHtml");
       return"/index";
    }
}
  • 運行Application.java,瀏覽器輸入http://127.0.0.1:8080/ 就能看到頁面上輸出的from TemplateController.helloHtml

springboot資源文件的約定目錄結構

  • Maven的資源文件目錄:/src/java/resources
  • spring-boot項目靜態文件目錄:/src/java/resources/static
  • spring-boot項目模板文件目錄:/src/java/resources/templates
  • spring-boot靜態首頁的支持,即index.html放在如下目錄結構會直接映射到應用的根目錄下:
classpath:/META-INF/resources/index.html
classpath:/resources/index.html
classpath:/static/index.html
calsspath:/public/index.html

thymeleaf的相關配製

  1. 在spring-boot下,默認約定了controller視圖跳轉中thymeleaf模板文件的的前綴prefix是」classpath:/templates/」,後綴suffix是」.html」 這個在application.properties配置文件中是能夠修改的。 以下配置能夠修改試圖跳轉的前綴和後綴
spring.thymeleaf.prefix: /templates/
spring.thymeleaf.suffix: .html

thymeleaf中的默認這是能夠查看org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties這個類的屬性spring

  1. Spring-boot使用thymeleaf時默認是有緩存的,即你把一個頁面代碼改了不會刷新頁面的效果,你必須從新運行spring-boot的main()方法才能看到頁面更改的效果。咱們能夠把thymeleaf的緩存關掉,用於支持頁面修改後從新發布到spring-boot內嵌的tomcat中去。在application.properties配置文件中加入如下配置。
# Allow Thymeleaf templates to be reloaded at dev time  
spring.thymeleaf.cache: false
server.tomcat.access_log_enabled: true
server.tomcat.basedir: target/tomcat

thymeleaf經常使用基礎知識點

  1. 在html頁面中引入thymeleaf命名空間,即 <html xmlns:th=http://www.thymeleaf.org></html>,此時在html模板文件中動態的屬性使用th:命名空間修飾。瀏覽器

  2. 引用靜態資源文件,好比CSS和JS文件,語法格式爲@{},如@{/js/user/user.js}會引入/static目錄下的/js/user/user.js文件。spring-mvc

  3. 訪問spring-mvc中model的屬性,語法格式爲${},如${user.id}能夠獲取model裏的user對象的id屬性。緩存

  4. 循環,在html的標籤中,加入th:each="value:${list}"形式的屬性,如<span th:each="user:${users}"></span>能夠迭代users的數據 。tomcat

  5. 判斷,在html標籤中,加入th:if="表達式"能夠根據條件顯示html元素 <span th:if="${not #lists.isEmpty(blog.publishTime)}"> <span id="publishtime" th:text="${#dates.format(blog.publishTime, 'yyyy-MM-dd HH:mm:ss')}"></span></span> 以上代碼表示若blog.publishTime時間不爲空,則顯示時間springboot

  6. 時間的格式化,${#dates.format(blog.publishTime,'yyyy-MM-dd HH:mm:ss')} 表示將時間格式化爲yyyy-MM-dd HH:mm:ss格式化寫法與Java格式化Date的寫法是一致的。mvc

  7. 字符串拼接有兩種形式 好比拼接這樣一個URL:/blog/delete/{blogId}app

  • 第一種:th:href="'/blog/delete/' + ${blog.id }"
  • 第二種:th:href="${'/blog/delete/' + blog.id }"
相關文章
相關標籤/搜索