以下是关于Spring Thymeleaf的完整攻略。
Spring Thymeleaf基本原理
Spring Thymeleaf是一个模板引擎,用于在Spring MVC中渲染HTML模板。它允许我们在HTML模板中使用Thymeleaf表达式,以便动态地显示数据和控制页面行为。Spring Thymeleaf的步骤如下:
- 添加依赖
- 配置Thymeleaf
- 创建控制器方法
- 创建HTML模板
- 渲染HTML模板
下面将详细说明每步。
步骤1:添加依赖
在使用Spring Thymeleaf之前,需要先添加依赖。可以使用以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
在上面的示例中,我们添加了spring-boot-starter-thymeleaf依赖。
步骤2:配置Thymeleaf
在添加依赖之后,就需要配置Thymeleaf了。可以使用以下示例:
@Configuration
public class ThymeleafConfig implements WebMvcConfigurer {
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
return templateEngine;
}
@Bean
public ThymeleafViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
return viewResolver;
}
private ITemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
return templateResolver;
}
}
在上面的示例中,我们创建了一个ThymeleafConfig类,并使用@Configuration注解将其标记为配置类。在类中,我们创建了一个templateEngine()方法和一个viewResolver()方法,用于配置Thymeleaf模板引擎和视图解析器。我们还创建了一个templateResolver()方法,用于配置模板解析器。
步骤3:创建控制器方法
在配置Thymeleaf之后,就需要创建控制器方法了。可以使用以下示例:
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("name", "World");
return "hello";
}
在上面的示例中,我们创建了一个hello()方法,并使用@GetMapping注解将其映射到ello路径。在方法参数中,我们使用Model参数将数据添加到模型中,并返回hello视图。
步骤4:创建HTML模板
在创建控制器方法之后,就需要创建HTML模板了。可以使用以下示例:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
<h1 th:text="'Hello, ' + ${name} + '!'"></h1>
</body>
</html>
在上面的示例中,我们创建了一个hello.html模板,并使用Thymeleaf表达式显示数据。注意,我们使用th:text属性将数据绑定到h1元素上。
步骤5:渲染HTML模板
在创建HTML模板之后,就需要渲染HTML模板了。可以使用以下示例:
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("name", "World");
return "hello";
}
在上面的示例中,我们创建了一个hello()方法,并使用@GetMapping注解将其映射到/hello路径。在方法参数中,我们使用Model参数将数据添加到模型中,并返回hello视图。
示例
下面是两个使用Spring Thymeleaf的示例:
示例1:使用Spring Thymeleaf
在这个示例中,我们将使用Spring Thymeleaf。
Controller.java
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("name", "World");
return "hello";
}
在上面的示例中,我们创建了一个hello()方法,并使用@GetMapping注解将其映射到/hello路径。在方法参数中,我们使用Model参数将数据添加到模型中,并返回hello视图。
hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
<h1 th:text="'Hello, ' + ${name} + '!'"></h1>
</body>
</html>
在上面的示例中,我们创建了一个hello.html模板,并使用Thymeleaf表达式显示数据。注意,我们使用th:text属性将数据绑定到h1元素上。
示例2:使用Spring Thymeleaf和Bootstrap
在这个示例中,我们将使用Spring Thymeleaf和Bootstrap。
Controller.java
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("name", "World");
return "hello";
}
在上面的示例中,我们创建了一个hello()方法,并使用@GetMapping注解将其映射到/hello路径。在方法参数中,我们使用Model参数将数据添加到模型中,并返回hello视图。
hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1 th:text="'Hello, ' + ${name} + '!'"></h1>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>
在上面的示例中,我们创建了一个hello.html模板,并使用Thymeleaf表达式显示数据。我们还使用Bootstrap样式和脚本来美化页面。
总结
就关于Spring Thymaf的完整攻略。Spring Thymeleaf是一个非常有用的模板引擎,可以帮助我们在Spring MVC中渲染HTML模板。