1. 程式人生 > >SpringBoot實戰(五)之Thymeleaf

SpringBoot實戰(五)之Thymeleaf

private true 標簽庫 body 連接池 ext val 目前 upload

Thymeleaf同jsp、volocity、freemarker等共同的職能是MVC模式中的視圖展示層,即View。

當然了,SpringBoot中也可以用jsp,不過不推薦這種用法,比較推崇的就是使用Thymeleaf。

關於Thymeleaf學習,建議參考官方文檔:https://www.thymeleaf.org/documentation.html

官方文檔例子,應有盡有。

之前接觸過Thymeleaf是因為公司項目初建期間用過它搭建過測試環境,後來根據領導的指示,需要快速開發,而且當時對於Thymeleaf不是十分了解,當時對於它的了解認識只是展示前端數據的,同jsp職能一樣,當然這也是它們的共性。比較詳細的深入了解和使用,是幫助一位學妹解決畢業論文的項目問題。那時幫助她寫了好十幾個類代碼和對應的十幾個html代碼。當時感觸比較深的是,Thymeleaf是如此的好用,比jsp還好用,jsp要遍歷之類,要麽加<%%>,或者引用jstl標簽庫進行數據遍歷等。而Thymeleat就不需要。簡潔直觀,我比較推崇Thymeleaf,特別是在前後端分離的項目,有的時候不用jsp,光純html+js的確有點吃力,即便使用了vue.js或者angular.js、react.js等雖然增加了便利性,但是了,如果一個項目前端語言不是十分統一的話,對於將來維護成本方面會大大提高,不易維護。

Thymeleaf對於前後端分離,我認為還是不錯的。

下面進入demo例子講解:

一、導入maven依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-uploading-files</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

二、編寫實體

package hello;

public class User {
    private Integer id;
    private String name;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        
this.name = name; } }

三、編寫Controller

package hello;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class TestController {

    
    
    @GetMapping(value="/test")
    public String test(Model model) {
        
          List<User> userList = new ArrayList<User>();
            for (int i = 0; i <10; i++) {
                User user =new User();
                user.setId(1);
                user.setName("張三");
                userList.add(user);
            }
            
            model.addAttribute("users", userList);
        return "test";
    }
}

四、編寫配置文件,將其放置在/src/main/resources下

application.properties

server.port=8080
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.check-template-location=true
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.mode=HTML5

五、在src/main/resources目錄下新建templates目錄並新建html文件

test.htm

<html xmlns:th="http://www.thymeleaf.org">
<body>

<h2>用戶列表</h2>
  <div>
     <ul>
         <li  th:each="user:${users}">
              <span th:text="${user.id}"></span>-
             <span th:text="${user.name}"></span>-
         </li>
     </ul>
   </div>
</body>
</html>

六、編寫啟動類

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

最後結果如下圖所示:

技術分享圖片

這裏沒有加入mysql或者其他數據相關的,如果要引用數據庫,引用對應數據庫的依賴和配置對應的數據庫連接池即可。

這裏可以參考我的關於Springboot+MyBatis+Thymeleaf

示例地址為:https://github.com/youcong1996/springboot-mybatis-demo

SpringBoot實戰(五)之Thymeleaf