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 的特点
-
自然模板
- Thymeleaf 模板是自然的,因为它们可以直接作为 HTML 文件编写,不需要额外的标签库或特定的语法。开发人员可以使用熟悉的 HTML 标签和属性,同时在需要动态内容的地方插入 Thymeleaf 表达式。
- 例如,在 HTML 中可以使用
th:text
属性来设置元素的文本内容:<span th:text="${message}">默认文本</span>
。这里,${message}
是 Thymeleaf 表达式,它将在运行时被动态的值替换。
-
强大的表达式语言
- Thymeleaf 提供了强大的表达式语言,可以访问对象属性、集合、方法调用等。表达式可以用于设置文本内容、属性值、条件判断、循环遍历等。
- 例如,可以使用
th:if
和th:unless
属性进行条件判断:<div th:if="${user.isAdmin}">管理员内容</div>
。这里,如果user
对象的isAdmin
属性为true
,则显示该<div>
元素。
-
易于集成
- Thymeleaf 可以轻松集成到各种 Java Web 框架中,如 Spring MVC、Spring Boot 等。它也可以与其他技术栈一起使用,如 JavaScript 框架和前端构建工具。
- 在 Spring Boot 项目中,只需添加 Thymeleaf 的依赖,配置好模板路径,就可以开始使用 Thymeleaf 模板进行页面渲染。
-
支持国际化
- Thymeleaf 支持国际化,可以根据用户的语言偏好显示不同的文本内容。开发人员可以使用国际化资源文件来定义不同语言的文本,然后在模板中使用 Thymeleaf 的国际化表达式来引用这些文本。
- 例如,使用
th:text="#{message.key}"
来引用国际化资源文件中的文本。
二、Thymeleaf 的用法
-
配置 Thymeleaf
- 在 Maven 或 Gradle 项目中,添加 Thymeleaf 的依赖。
- 在 Spring Boot 项目中,可以通过在
application.properties
或application.yml
文件中配置 Thymeleaf 的相关属性,如模板路径、缓存设置等。
-
创建模板文件
- 创建 HTML 文件作为 Thymeleaf 模板,在文件中可以使用 Thymeleaf 的表达式和属性来插入动态内容。
- 例如,可以使用
th:each
属性来循环遍历集合:<ul><li th:each="item : ${items}" th:text="${item}"></li></ul>
。
-
在控制器中返回模板
- 在 Java 控制器类中,使用
Model
对象添加数据,并返回模板名称,以便 Thymeleaf 进行渲染。
- 在 Java 控制器类中,使用
原文地址:https://blog.csdn.net/2301_78714573/article/details/142407006
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!