Thymeleaf

devtools/2024/10/22 7:42:08/

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.Driverurl: jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8username: rootpassword: 123456#  mvc:
#    view:
#      prefix: /templates/
#      suffix: .html#  profiles:#    active: devthymeleaf: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: traceroot: warnpattern:console: '%p%m%n'# THYMELEAF(ThymeleafAutoConfiguration)# 开启模板缓存(默认值:true)server:# 服务器端口port: 8080servlet:encoding:charset: UTF-8# contextPath一般不用配置#    context-path: /crm# 错误页,指定发生错误时,跳转的URLerror:path: /error# session最大超过时间(分钟),默认为30reactive:session:timeout: 60# tomcat最大线程数,默认为200tomcat: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 {@Resourceprivate 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 进行渲染。

 


http://www.ppmy.cn/devtools/115080.html

相关文章

【JavaEE初阶】多线程(5 单例模式 \ 阻塞队列)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 实例1: 单例模式 饿汉模式 懒汉模式 实例2:阻塞队列 生产者消费者模型 优点 ​编辑 代价 简单实现一个生产者消费者模型 Java标准库中的阻塞队列 ​编辑 模拟实现一…

记录|C#的资源路径设置的资料整理

目录 前言一、在这里插入图片描述 https://bbs.csdn.net/topics/360001606 二、三、添加到资源文件中四、获得图片的三种路径方法五、给资源文件添加文件夹更新时间 前言 参考文章&#xff1a; 原本以为C# winform中进行图片等文件的路径的读取是直接可以按照资源文件中显示的来…

win7自带壁纸丢失主题丢失

有时候盗版破解或者其他美化工具会导致win7自带的壁纸丢失&#xff0c;从个性化管理里面无法恢复原始的壁纸&#xff08;如下图&#xff09;&#xff0c;但是由于工作原因公司的电脑又不方便设置第三方的壁纸&#xff0c;所以找了一下解决方案。 经典问题&#xff0c;百度找到的…

【Mysql-索引总结】

文章目录 什么是索引索引类型索引的数据结构Hash索引有序数组二叉搜索树平衡二叉树B树B索引 索引使用规则索引失效的情况如何选择正确的列进行索引&#xff1f; 什么是索引 索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构&#xff0c;它是某个表中…

linux驱动开发-内核并发 poll 和 lock

内核并发poll 加 lock 执行流程 用户空间进程调用write将数据写入设备&#xff1a;执行char_write&#xff0c;更新event_triggered并唤醒等待的进程。有进程因此等待&#xff1a;正在执行的char_read会检查event_triggered&#xff0c;如果为0&#xff0c;执行等待。数据可用…

国庆出游必备!南卡Pro5骨传导耳机全体验!让旅途更完美!

在国庆长假来临之际&#xff0c;许多人都计划着出行&#xff0c;无论是短途旅行还是长途探险&#xff0c;一款好的耳机无疑能为旅途增添不少乐趣。而骨传导耳机&#xff0c;以其独特的传声方式和佩戴体验&#xff0c;成为了不少运动爱好者和户外探险者的首选。 今天&#xff0…

OpenAI GPT-3 API error: “You must provide a model parameter“

题意&#xff1a;OpenAI GPT-3 API 错误&#xff1a;“你必须提供一个模型参数” 问题背景&#xff1a; I am trying to POST a question to openAI API via SWIFT. It works fine, if I use the same payload via Postman, but in the Xcode-Condole I got the following res…

了解 React 应用程序中的渲染和重新渲染:它们如何工作以及如何优化它们

当我们在 react 中创建应用程序时&#xff0c;我们经常会遇到术语“渲染”和“重新渲染组件”。虽然乍一看这似乎很简单&#xff0c;但当涉及不同的状态管理系统&#xff08;如 usestate、redux&#xff09;或当我们插入生命周期钩子&#xff08;如 useeffect&#xff09;时&am…