自学内容网 自学内容网

Thymeleaf

Thymeleaf 是一种用于 Web 和独立环境的现代服务器端 Java 模板引擎,它能够处理 HTML、XML、JavaScript、CSS 等多种类型的文件。

构建项目:

 添加依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.ktjiaoyu</groupId>
    <artifactId>Spring-Thymeleaf</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>Spring-Thymeleaf</name>
    <description>Spring-Thymeleaf</description>
    <properties>
        <java.version>21</java.version>
    </properties>
    <dependencies>
        <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>
            <scope>runtime</scope>
            <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>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.18</version>
        </dependency>

        <!-- 导入 mybatis-plus 包 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.7</version>
        </dependency>

        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>nz.net.ultraq.thymeleaf</groupId>
            <artifactId>thymeleaf-layout-dialect</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 application.yml

spring:
  # 热部署默配置
  devtools:
    restart:
      enabled: true # 热部署默认会重启
      additional-paths: src/main/java # 指定监控的路径
      exclude: static/**,public/**

  #配置数据源
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8
    username: root
    password: 123456

#  mvc:
#    view:
#      prefix: /templates/
#      suffix: .html

  #  profiles:
  #    active: dev

  thymeleaf:
    cache: true
    # 检查模板是否存在,然后再呈现
    check-template: true
    # 检查模板位置是否正确(默认值:true)
    check-template-location: true
    # Context-Type的值(默认值:text/html)
    servlet:
      content-type: text/html
    # 开启MVC Thymeleaf视图解析(默认值:true)
    enabled: true
    # 模板编码
    encoding: UTF-8
    # 要被排除再解析之外的视图名称列表,用逗号分隔
    excluded-view-names:
    # 要运用于模板之上的模板模式。呈现StandardTemplate—ModeHandlers(默认值:HTML5)
    mode: HTML5
    # 在构建URL时添加导视图名称前的前缀(默认值:classpath:/templates/)
    prefix: classpath:/templates/
    # 在构建URL时添加导视图名称后的前缀(默认值:.html)
    suffix: .html
    # Thymeleaf模板解析器在解析器链中的顺序,默认情况下,它排第一位,顺序从1开始,只有在定义了额外的TemplateResolver Bean时才需要设置这个属性。
    template-resolver-order:
    # 可解析的视图名称列表,用逗号分隔
#    view-names:


  # 日志输出
logging:
  level:
    com.bdqn.mapper: trace
    root: warn
  pattern:
    console: '%p%m%n'

    # THYMELEAF(ThymeleafAutoConfiguration)
    # 开启模板缓存(默认值:true)


server:
  # 服务器端口
  port: 8080
  servlet:
    encoding:
      charset: UTF-8

      # contextPath一般不用配置
    #    context-path: /crm
    # 错误页,指定发生错误时,跳转的URL
  error:
    path: /error

    # session最大超过时间(分钟),默认为30
  reactive:
    session:
      timeout: 60

      # tomcat最大线程数,默认为200
  tomcat:
    threads:
      max: 600

    # tomcat的URI编码
    uri-encoding: UTF-8

    # 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹
    basedir: /tmp/log

    # 打开Tomcat的Access日志,并可以设置日志格式
    # server.tomcat.access-log-enabled=true
    # server.tomcat.access-log-pattern=
    # accesslog 目录,默认再basedir/logs
    # server.tomcat.accesslog.directory=
    # 日志文件目录






Model准备 

package com.ktjiaoyu.crm.service;
import com.ktjiaoyu.crm.pojo.User;
import java.util.List;
public interface UserService {
    public User login(String usrName, String usrPassword);
    public User addUser(User user);
    public void deleteUser(Long usrId);
    public User updateUser(User user);
    public User getUser(Long usrId);
    public List<User> findAllUsers();
}

 控制器开发:

package com.ktjiaoyu.crm.controller;
import com.ktjiaoyu.crm.pojo.User;
import com.ktjiaoyu.crm.service.UserService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.Date;
import java.util.List;
@Controller
public class ExampleController {
    @Resource
    private UserService userService;

    //for循环
    @GetMapping(value = "/list")
    public String list(Model model){
        List<User> list=userService.findAllUsers();
        model.addAttribute("users",list);
        return "demo/list";
    }



    //条件判断if/unless
    @GetMapping(value = "/if")
    public String ifunless(Model model){
        model.addAttribute("flag","yes");
        return "demo/if";
    }


    @GetMapping(value = "/hello/{id}")
    public String getUser(@PathVariable("id") Long usrId, Model model){
        User user = userService.getUser(usrId);
        model.addAttribute("user",user);
        return "demo/hello";
    }
    //
    @GetMapping(value = "/string")
    public String getString(Model model, HttpServletRequest request){//演示赋值,字符串拼接
        model.addAttribute("userName","ktjiaoyu");
        request.setAttribute("test","request");
        request.getSession().setAttribute("test","session");
        model.addAttribute("date",new Date());
        return "demo/string";
    }
    //内联
    @GetMapping(value = "/inline")
    public String inline(Model model){
        model.addAttribute("userName","ktjiaoyu");
        return "demo/inline";
    }

}

 页面开发(这个自行编写就好)

这个是一个简单的示例,后续大家可以自己去试一试

总结:

Thymeleaf 的特点

  1. 自然模板

    • Thymeleaf 模板是自然的,因为它们可以直接作为 HTML 文件编写,不需要额外的标签库或特定的语法。开发人员可以使用熟悉的 HTML 标签和属性,同时在需要动态内容的地方插入 Thymeleaf 表达式。
    • 例如,在 HTML 中可以使用th:text属性来设置元素的文本内容:<span th:text="${message}">默认文本</span>。这里,${message}是 Thymeleaf 表达式,它将在运行时被动态的值替换。
  2. 强大的表达式语言

    • Thymeleaf 提供了强大的表达式语言,可以访问对象属性、集合、方法调用等。表达式可以用于设置文本内容、属性值、条件判断、循环遍历等。
    • 例如,可以使用th:ifth:unless属性进行条件判断:<div th:if="${user.isAdmin}">管理员内容</div>。这里,如果user对象的isAdmin属性为true,则显示该<div>元素。
  3. 易于集成

    • Thymeleaf 可以轻松集成到各种 Java Web 框架中,如 Spring MVC、Spring Boot 等。它也可以与其他技术栈一起使用,如 JavaScript 框架和前端构建工具。
    • 在 Spring Boot 项目中,只需添加 Thymeleaf 的依赖,配置好模板路径,就可以开始使用 Thymeleaf 模板进行页面渲染。
  4. 支持国际化

    • Thymeleaf 支持国际化,可以根据用户的语言偏好显示不同的文本内容。开发人员可以使用国际化资源文件来定义不同语言的文本,然后在模板中使用 Thymeleaf 的国际化表达式来引用这些文本。
    • 例如,使用th:text="#{message.key}"来引用国际化资源文件中的文本。

二、Thymeleaf 的用法

  1. 配置 Thymeleaf

    • 在 Maven 或 Gradle 项目中,添加 Thymeleaf 的依赖。
    • 在 Spring Boot 项目中,可以通过在application.propertiesapplication.yml文件中配置 Thymeleaf 的相关属性,如模板路径、缓存设置等。
  2. 创建模板文件

    • 创建 HTML 文件作为 Thymeleaf 模板,在文件中可以使用 Thymeleaf 的表达式和属性来插入动态内容。
    • 例如,可以使用th:each属性来循环遍历集合:<ul><li th:each="item : ${items}" th:text="${item}"></li></ul>
  3. 在控制器中返回模板

    • 在 Java 控制器类中,使用Model对象添加数据,并返回模板名称,以便 Thymeleaf 进行渲染。

 



原文地址:https://blog.csdn.net/2301_78714573/article/details/142407006

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!