第六章:thymeleaf模板引擎

一、概述
Thymeleaf是一种用于在服务器端和客户端之间渲染HTML、XML、JavaScript、CSS和文本的Java模板引擎。它主要用于Web开发,通过使界面与业务数据分离,提高了开发效率,并提供了灵活、自然的模板处理功能。Thymeleaf因其开箱即用、易于集成以及与Spring Boot的紧密集成而广受欢迎。

二、特点
动静分离:
Thymeleaf选用HTML作为模板页,通过特定标签语法代表其含义,但并未破坏HTML结构。即使无网络、不通过后端渲染也能在浏览器成功打开,大大方便了界面的测试和修改。
开箱即用:
Spring Boot官方对Thymeleaf提供了大力支持,并做了很多默认配置,开发者只需编写对应的HTML即可,大大减轻了上手难度和配置复杂度。
易于集成:
Thymeleaf与Spring Boot框架紧密集成,提供了许多与Spring Boot相关的特性和扩展。它可以与Spring MVC、Spring Security等框架无缝集成。
强大的表达式功能:
Thymeleaf支持强大的表达式语言(SpEL),可以在模板中执行复杂的表达式操作,如变量赋值、条件判断、迭代循环等。
应用广泛:
Thymeleaf是目前应用广泛的模板引擎之一,拥有活跃的社区和丰富的生态系统。它被广泛用于开发各种类型的Web应用和邮件模板。

添加依赖:不管采用那种构建项目方式,项目准备好后,需要配置pom.xml文件,添加相应的依赖(启动器),pom.xml文件中添加的依赖如下:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

Model 准备

 /**
     * 编号
     */
    @TableId(value = "usr_id", type = IdType.AUTO)
    private Long usr_id;

    /**
     * 姓名
     */
    @TableField(value = "usr_name")
    private String usr_name;

    /**
     * 密码
     */
    @TableField(value = "usr_password")
    private String usr_password;

    /**
     * 角色编号
     */
    @TableField(value = "usr_role_id")
    private Long usr_role_id;

    /**
     * 状态
     */
    @TableField(value = "usr_flag")
    private Integer usr_flag;

控制器开发:在com.bdqn.controller包下创建 UserController,用于演示:

@RequestMapping(value = "/dologin")
    public String dologin(String usrName, String usrPassword, HttpSession request) {
        User user = userService.login(usrName, usrPassword);
        if (user!= null) {
            request.setAttribute("loginUser", user);
            return "main";
        } else {
            request.setAttribute("message", "用户名或密码错误");
            return "login";
        }
    }

开发页面:在resource/templates/demo 目录下新建User

.html,Kind(种类)选择 HTML5 file

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Holle</title>
    </head>

    <<body>
        欢迎您:<span th:text="${user.usr_name}">usr_name</span>

        赋值:<span th:text="${userName}">userName</span><br/>
        拼接:<span th:text="'Hello' + ${userName}+'!'">Hello userName!</span><br/>
        拼接:<span th:text="|Hello' + ${userName}+'!|">Hello userName!</span><br/>


        <<div th:inline="text">
            <p>Hello , [[${user.name}]]!</p>
            <br/>
        </div>
    </body>
</html>
1. 数据绑定与文本替换

th:text:用于替换标签体内的文本内容。

<span th:text="${user.name}">用户名</span>

 th:utext:与th:text类似,但会处理HTML标签。

<p th:utext="${htmlContent}">这里会展示HTML内容</p>
2. 条件判断

th:if:用于条件判断,如果条件为真,则显示标签体内容。

<span th:if="${user.admin}">管理员</span>

th:unless:与th:if相反,条件为假时显示标签体内容。

<a th:href="@{/login}" th:unless="${session.user != null}">Login</a>
3. 循环遍历

th:each:用于遍历集合、数组或Map等 

<ul> <li th:each="user : ${userList}" th:text="${user.name}"></li> </ul>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值