• SpringBoot-4.模板引擎Thymeleaf


    Thymeleaf

    前端技术发展

    jsp 动态技术 (serverlet启动之后,才能运行jsp)

    .html 动静分离 (Thymeleaf,服务器没启动可以看到静态数据,启动了能看到动态数据)

    node.js vue.js angular.js react.js (前后端分离)

    概述

    Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较与其他的模板引擎,它有如下三个极吸引人的特点

    • Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板 + 数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
    • Thymeleaf 开箱即用的特性。它提供标准和 Spring 标准两种方言,可以直接套用模板实现 JSTL、 OGNL 表达式效果,避免每天套模板、改 JSTL、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
    • Thymeleaf 提供 Spring 标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。

    为什么使用 Thymeleaf

    内嵌的 Servlet 容器 无法运行 JSP 因此需要模板引擎

    如果希望以 Jar 形式发布模块则尽量不要使用 JSP 相关知识,这是因为 JSP 在内嵌的 Servlet 容器上运行有一些问题 (内嵌 Tomcat、 Jetty 不支持 Jar 形式运行 JSP,Undertow 不支持 JSP)。

    Spring Boot 中推荐使用 Thymeleaf 作为模板引擎,因为 Thymeleaf 提供了完美的 Spring MVC 支持

    Spring Boot 提供了大量模板引擎,包括:

    • FreeMarker
    • Groovy
    • Mustache
    • Thymeleaf
    • Velocity
    • Beetl

    添加模板

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.nekohtml</groupId>
                <artifactId>nekohtml</artifactId>
                <version>1.9.22</version>
            </dependency>
    

    配置 Thymeleaf

    spring:
      thymeleaf:
        cache: false
        mode: HTML
        encoding: UTF-8
        servlet:
          content-type: text/html
    

    创建控制类

    @Controller
    public class thymeleafController {
        @GetMapping("/index")
        public String index(Model model){
            model.addAttribute("name", "张三");
            return "index";
        }
    }
    

    创建测试页面

    templates 目录下创建 index.html 文件,代码如下

    html:5+tab 可以生成页面

    <!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <span th:text="${name}">李四</span>
    </body>
    </html>
    

    静态李四,动态张三

    访问测试

  • 相关阅读:
    给入门程序员的一些学习建议(一定要看)
    拦截器工作原理
    Struts 2中如何解决中文乱码问题?
    struts1与struts2的区别。
    MVC是什么?
    spring MVC工作原理
    C#中,子类构造函数调用父类父类构造函数的正确方式
    泛型的优点
    jsp的page、request、session、application四个作用域的作用
    jsp转发与重定向的区别
  • 原文地址:https://www.cnblogs.com/orange-lsc/p/12867268.html
Copyright © 2020-2023  润新知