当前位置: 首页 > news >正文

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.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 进行渲染。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 网安面试题1
  • 计算机二级 MS office总结
  • 移植Linux:如何制作rootfs?
  • Alluxio Enterprise AI on K8s FIO 测试教程
  • 2024年中国研究生数学建模竞赛ABCDEF题【附带解题思路代码+结果】
  • 【RPA私教课:UIPath】RPA 赋能科技企业,登录时验证码自动截取
  • 详解npm源及其使用方法
  • 【农信网-注册/登录安全分析报告】
  • Parallels Desktop 20破解版(Mac虚拟机) v20.0.0 for Mac 最新商业版(支持M系列)
  • Linux介绍;Linux安装;Linux常见错误
  • 【云安全】云服务安全攻防
  • Android 签名、空包签名 、jarsigner、apksigner
  • 【二级C语言考试】自定义数据类型
  • Gin渲染
  • CSS01-语法规范、基础选择器
  • ES6核心特性
  • in typeof instanceof ===这些运算符有什么作用
  • javascript 总结(常用工具类的封装)
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • 翻译--Thinking in React
  • 给新手的新浪微博 SDK 集成教程【一】
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 微服务核心架构梳理
  • 我与Jetbrains的这些年
  • 运行时添加log4j2的appender
  • 阿里云API、SDK和CLI应用实践方案
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (5)STL算法之复制
  • (a /b)*c的值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (pytorch进阶之路)扩散概率模型
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)计算机毕业设计高校学生选课系统
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .ai域名是什么后缀?
  • .gitignore文件设置了忽略但不生效
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 的程序集加载上下文
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET 中的轻量级线程安全
  • .NET基础篇——反射的奥妙
  • [ IO.File ] FileSystemWatcher
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [.net] 如何在mail的加入正文显示图片
  • [2023-年度总结]凡是过往,皆为序章
  • [Android] Implementation vs API dependency
  • [BUG] Authentication Error