Spring Boot Thymeleaf模板引擎的使用详解
Thymeleaf是一个现代的服务器端Java模板引擎,可用于Web和独立环境。与许多传统的Java模板引擎不同,Thymeleaf采用HTML作为标记语言,以提高可读性,并使模板更易于编辑和维护。
本攻略将介绍如何在Spring Boot应用程序中使用Thymeleaf进行模板渲染。
添加依赖
首先,在pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
这将导入Spring Boot Thymeleaf模板引擎的所有依赖项。
配置模板引擎
接下来,您需要配置Thymeleaf模板引擎。
在application.properties
文件中添加以下内容:
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
这将告诉Spring Boot在/templates
目录中查找模板文件,并将它们视为HTML文件。如果您想使用不同的前缀和后缀,请将它们替换为您自己的值。
创建HTML文件
现在,我们可以创建我们的HTML文件。在/templates
目录下创建一个名为index.html
的文件,并将以下内容添加到其中:
<!DOCTYPE html>
<html>
<head>
<title>Thymeleaf Example</title>
</head>
<body>
<h1>Hello, Thymeleaf!</h1>
<p th:text="'The current date and time is ' + ${#dates.format(#dates.createNow(), 'yyyy-MM-dd HH:mm:ss')}"></p>
</body>
</html>
这是一个简单的HTML页面,它包括一个标题和一个段落。在这个段落中,我们使用th:text
属性将当前日期和时间显示为文本。
创建Controller
接下来,我们需要创建一个Spring Controller将模板渲染为响应。
在src/main/java/com/example/demo
目录下创建一个名为DemoController.java
的文件,并将以下内容添加到其中:
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class DemoController {
@GetMapping("/")
public String index(Model model) {
return "index";
}
}
这将创建一个名为DemoController
的Spring Controller,它将使用@Controller
注解标记。
该index
方法使用@GetMapping
注解将其映射到/
路径。它还将Model
作为参数传递,这使我们能够将数据添加到模板中。
最后,它返回一个名为index
的字符串,这实际上是模板文件的名称。Spring将在/templates
目录下查找名为index.html
的文件,并将其用作响应。
运行应用程序
现在,我们已经准备好运行我们的应用程序了。
使用以下命令启动应用程序:
mvn spring-boot:run
或者,您可以使用您喜欢的其他方法启动应用程序。
打开浏览器并转到http://localhost:8080/
。您应该看到一个欢迎页面,上面写着“Hello, Thymeleaf!”以及日期和时间。
示例1:使用Thymeleaf表达式
让我们尝试一些更复杂的内容。修改index.html
以包含另一个段落,该段落将显示当前用户的名称。
<!DOCTYPE html>
<html>
<head>
<title>Thymeleaf Example</title>
</head>
<body>
<h1>Hello, Thymeleaf!</h1>
<p th:text="'The current date and time is ' + ${#dates.format(#dates.createNow(), 'yyyy-MM-dd HH:mm:ss')}"></p>
<p th:text="'Welcome, ' + ${user.name} + '!'"></p>
</body>
</html>
我们添加了一个新的<p>
元素,它包含一个th:text
属性。这是一个表达式,它将用户对象的名称添加到欢迎消息中。
我们需要在DemoController
中添加一个新的方法来处理这个表达式。修改代码如下:
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class DemoController {
@GetMapping("/")
public String index(Model model) {
model.addAttribute("user", new User("John Doe"));
return "index";
}
}
在这个方法中,我们在Model
中添加了一个名为user
的新对象。这个对象有一个名为name
的字段,它包含用户的名称。
现在重新启动应用程序并刷新浏览器。欢迎消息应该包含“Welcome, John Doe!”。
示例2:循环迭代
使用th:each
属性可以很容易地在模板中进行循环迭代。让我们尝试修改我们的HTML文件,以便它在列表中显示用户的联系人。
<!DOCTYPE html>
<html>
<head>
<title>Thymeleaf Example</title>
</head>
<body>
<h1>Hello, Thymeleaf!</h1>
<p th:text="'The current date and time is ' + ${#dates.format(#dates.createNow(), 'yyyy-MM-dd HH:mm:ss')}"></p>
<p th:text="'Welcome, ' + ${user.name} + '!'"></p>
<ul>
<li th:each="contact : ${user.contacts}" th:text="${contact}" />
</ul>
</body>
</html>
我们添加了一个新的<ul>
元素,并使用th:each
属性在其中迭代用户的联系人。在每个迭代中,我们将其显示为列表项的文本。
我们还需要在DemoController
中添加一个新的方法来处理这个表达式。修改代码如下:
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Arrays;
@Controller
public class DemoController {
@GetMapping("/")
public String index(Model model) {
User user = new User("John Doe");
user.setContacts(Arrays.asList("johndoe@example.com", "johndoe@gmail.com"));
model.addAttribute("user", user);
return "index";
}
}
在这个方法中,我们创建了一个新的User
对象,并使用setContacts
方法设置了该对象的联系人列表。然后我们将user
对象添加到Model
中。
最后,重新启动应用程序并刷新浏览器。您应该看到一个带有联系人列表的页面。
总结
恭喜!您已经成功地学习了如何在Spring Boot应用程序中使用Thymeleaf模板引擎进行模板渲染。这包括添加依赖项,配置模板引擎,创建HTML文件,创建Spring Controller以及渲染模板。本攻略还包括两个示例,展示了如何使用Thymeleaf表达式和循环迭代。
如果您想了解更多关于Spring Boot和Thymeleaf模板引擎的信息,请参阅官方文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot thymeleaf模板引擎的使用详解 - Python技术站