Heim  >  Artikel  >  Java  >  Detaillierte Einführung in Thymeleaf-Vorlagen in SpringBoot

Detaillierte Einführung in Thymeleaf-Vorlagen in SpringBoot

不言
不言nach vorne
2018-10-11 15:19:323263Durchsuche

Dieser Artikel bietet Ihnen eine detaillierte Einführung in die Thymeleaf-Vorlage in SpringBoot. Ich hoffe, dass er für Freunde hilfreich ist.

1. Vorwort

Thymeaf ist als Ersatz für JSP entstanden, obwohl JSP schon lange existiert und in Java verwendet wird Web Es ist überall in der Entwicklung, weist aber auch einige Mängel auf:

1. Das offensichtlichste Problem mit JSP besteht darin, dass es wie HTML oder XML aussieht, es aber nicht ist. Die meisten JSP-Vorlagen liegen im HTML-Format vor, sind jedoch mit Tags aus verschiedenen JSP-Tag-Bibliotheken gemischt, was die Sache sehr verwirrend macht.

2. Die JSP-Spezifikation ist eng mit der Servlet-Spezifikation gekoppelt. Dies bedeutet, dass es nur in Servlet-basierten Webanwendungen verwendet werden kann. JSP-Vorlagen können weder als allgemeine Vorlagen (z. B. zum Formatieren von E-Mails) noch in Nicht-Servlet-Webanwendungen verwendet werden.

Im Vergleich zu JSP löst Thymeleaf diese Mängel sehr gut:

1. Thymeleaf-Vorlagen sind nativ und basieren nicht auf Tag-Bibliotheken. Es kann dort bearbeitet und gerendert werden, wo Roh-HTML akzeptiert wird.

2. Weil es daher nicht mit der Servlet-Spezifikation gekoppelt ist Thymianblatt Vorlagen können in Bereiche gelangen, die JSP nicht erreichen kann. Dies bedeutet, dass Thymeleaf-Vorlagen im Gegensatz zu JSPs bearbeitet und sogar in ihrer ursprünglichen Form gerendert werden können, ohne dass irgendeine Art von Verarbeitung erforderlich ist. Natürlich benötigen wir Thymeleaf, um die Vorlage zu verarbeiten und die endgültige gewünschte Ausgabe zu rendern. Dennoch kann home.html ohne besondere Verarbeitung in einen Webbrowser geladen werden und ähnelt einem vollständigen Rendering.

Spring Boot rät von der Verwendung von JSP für die Webentwicklung ab.

2. Integrieren Sie die Thymeleaf-Vorlagen-Engine

SpringBoots Unterstützung für die Thymeleaf-Vorlagen-Engine ist ebenfalls sehr einfach:

pom.xml

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

Zu diesem Zeitpunkt ist die Unterstützung von SpringBoot für Thymeleaf-Vorlagen abgeschlossen und wir können Thymeleaf-Vorlagen in der Webentwicklung verwenden. Ganz einfach, oder?

in früheren Artikeln erwähnt Der Schlüssel zu SpringBoot ist „Konvention“. Da wir eine so einfache Konfiguration gewählt haben, müssen wir während der Entwicklung die Anforderungen von SpringBoot für Thymeleaf erfüllen. Der wichtigste Punkt der herkömmlichen Lösung besteht darin, dass die Vorlagendateien im Vorlagenverzeichnis abgelegt werden, dh das Vorlagenparser-Präfix lautet /templates/ und das Suffix lautet .html

2. application.yml

Was ist, wenn Sie nicht die sogenannte herkömmliche Lösung wünschen und einige benutzerdefinierte Konfigurationen vornehmen möchten? Schauen Sie unten:

spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    servlet:
      content-type: text/html
    enabled: true
    encoding: UTF-8
    mode: HTML5
    cache: false

3. WebConfig.java

Wenn die obige Konfiguration Ihre Anforderungen nicht erfüllen kann, möchten Sie detailliertere Kontrolle über Thymeleaf haben, einschließlich der Konfiguration des Ansichtsparsers, des Vorlagenparsers und der Vorlage Motor, dann sehen Sie sich bitte die Lösung unten an!

/**
 * 1、ThymeleafViewResolver 接收逻辑视图名称将它解析为视图
 * 2、SpringTemplateEngine会在Spring中启用Thymeleaf引擎,用来解析模板,并基于这些模板渲染结果
 * 3、TemplateResolver会最终定位和查找模板。
 */
@Configuration
public class WebConfig {
    /**
     * 配置 Thymeleaf 视图解析器 —— 将逻辑视图名称解析为 Thymeleaf 模板视图
     *
     * @param springTemplateEngine 模板引擎
     * @return
     */
    @Bean
    public ViewResolver viewResolver(SpringTemplateEngine springTemplateEngine){
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(springTemplateEngine);
        return resolver;
    }
    /**
     * 模板引擎 —— 处理模板并渲染结果
     *
     * @param templateResolver 模板解析器
     * @return
     */
    @Bean
    public SpringTemplateEngine springTemplateEngine(ITemplateResolver templateResolver) {
        SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine();
        springTemplateEngine.setTemplateResolver(templateResolver);
        return springTemplateEngine;
    }
    /**
     * 模板解析器 —— 加载 Thymeleaf 模板
     *
     * @return
     */
    @Bean
    public ITemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setPrefix("classpath:/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCacheable(false);
        templateResolver.setTemplateMode("HTML5");
        return templateResolver;
    }
}

3. Verwenden Sie die Thymeleaf-Vorlage

Nach Abschluss der obigen Konfiguration werfen wir einen Blick auf die Verwendung der Thymeleaf-Vorlage in SpringBoot:

1. Vorlagendatei – /templates/user/list.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <title>Insert title here</title>
</head>
<body>
<h2>用户列表</h2>
<div>
    <ul>
        <li  th:each="user:${users}">
            <span th:text="${user.uuid}"></span>-
            <span th:text="${user.name}"></span>-
            <span th:text="${user.age}"></span>-
            <span th:text="${user.address}"></span>
        </li>
    </ul>
</div>
</body>
</html>

2. Kontrollebene – ModelAndViews

Hier bezieht sich Modell auf Ja: Die Kontrollschicht verarbeitet die Anfrage und gibt die Ergebnisse zurück, die gerendert werden müssen. Ansichten beziehen sich auf: den logischen Ansichtsnamen der Vorlage (getrennt von Front- und Back-End).

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/list")
    public String listUser(Model model) {
        List<UserDto> userList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            userList.add(new UserDto(UUID.randomUUID().toString().replace("-", ""), "张三" + i, 1, "中国北京"));
        }
        model.addAttribute("users", userList);
        return "user/list";
    }
}

3. Wirkung

Detaillierte Einführung in Thymeleaf-Vorlagen in SpringBoot

Demo-Quellcode: https:/ /github.com/JMCuixy/Thymeleaf

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Thymeleaf-Vorlagen in SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen