Spring Thymeleaf

  • Post category:Java

以下是关于Spring Thymeleaf的完整攻略。

Spring Thymeleaf基本原理

Spring Thymeleaf是一个模板引擎,用于在Spring MVC中渲染HTML模板。它允许我们在HTML模板中使用Thymeleaf表达式,以便动态地显示数据和控制页面行为。Spring Thymeleaf的步骤如下:

  1. 添加依赖
  2. 配置Thymeleaf
  3. 创建控制器方法
  4. 创建HTML模板
  5. 渲染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模板。