springboot Thymeleaf基本使用

文章目录

  • 什么是Thymeleaf
  • 集成Thymeleaf模板
    • 引入依赖
    • 编辑配置
    • 编写controller
    • 测试访问
  • Thymeleaf 基础用法
    • 1).html文件使用thymeleaf语法 必须导入thymeleaf的头才能使用相关语法
    • 2).在html中通过thymeleaf语法获取数据
      • 获取单个属性
      • 获取对象属性
      • 传递集合对象
      • 传递条件对象
      • 获取session作用域
  • Thymeleaf 如何引入静态资源
    • 使用thymeleaf模板项目中静态资源默认放在resources路径小static目录中
  • **注意: @{/}代表通过thymeleaf语法动态获取应用名**

什么是Thymeleaf

在这里插入图片描述

Thymeleaf是一个现代服务器端 Java 模板引擎,适用于 Web 和独立环境。

Thymeleaf 的主要目标是将优雅的自然模板引入您的开发工作流程 - HTML 可以在浏览器中正确显示,也可以用作静态原型,从而允许开发团队进行更强有力的协作。

凭借 Spring Framework 的模块、与您喜爱的工具的大量集成以及插入您自己的功能的能力,Thymeleaf 非常适合现代 HTML5 JVM Web 开发 - 尽管它还有更多功能。

集成Thymeleaf模板

注意springboot建立好之后,模版文件就放在templates里面
在这里插入图片描述

引入依赖

	<!--使用thymelaf--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

编辑配置

# 配置 thymeleaf
spring:thymeleaf:prefix: classpath:/templates/  #指定thymeleaf模板前缀目录suffix: .html                  #指定模板的后缀cache: false                    #是否开启thymeleaf缓存 默认值是true开启缓存  在开发过程中推荐使用false

编写controller

@Controller    //一定要是@Controller 不能再使用@RestController注解
@RequestMapping("hello")
public class HelloController {@GetMapping("hello")public String hello(){System.out.println("测试与 thymeleaf 的集成");return "index";}
}

测试访问

在这里插入图片描述


Thymeleaf 基础用法

1).html文件使用thymeleaf语法 必须导入thymeleaf的头才能使用相关语法

	namespace: 命名空间  
<html lang="en" xmlns:th="http://www.thymeleaf.org">

在这里插入图片描述

2).在html中通过thymeleaf语法获取数据

获取单个属性

设置数据

  @RequestMapping("demo")public String demo(HttpServletRequest request, Model model, HttpSession session) {String name ="小陈";System.out.println("demo ok");request.setAttribute("name",name);return "demo";}

获取数据

<h4>获取单个数据:<span th:text="${name}"></span></h4>

展示数据

在这里插入图片描述
另外有时候,我们不是直接把文本渲染到页面中,是要,直接将获取数据先解析成html标签在渲染到页面。
所以我们可以使用以下方式
设置数据

 String content = "<a href='http://www.baidu.com'>百度一下</a>";System.out.println("demo ok");model.addAttribute("content", content);

获取数据

<h4>获取单个数据: <span th:utext="${content}"></span></h4>

展示数据
在这里插入图片描述

将数据赋值给表单元素

<input type="text" name="username" th:value="${name}">

获取对象属性

设置数据

  User user = new User(21, "小张", 2300.23, new Date());request.setAttribute("user", user);

获取数据

<!-- 格式化日期:${#dates.format(格式化值,'格式')} -->
<h4>获取对象类型数据:id:<span th:text="${user.id}"/>name:<span th:text="${user.name}"/>salary:<span th:text="${user.salary}"/>birthday:<span th:text="${#dates.format(user.birthday,'yyyy-MM-dd HH:mm:ss')}"/>
</h4>

展示数据
在这里插入图片描述

传递集合对象

设置数据

//传递集合类型数据List<User> users = Arrays.asList(new User(22, "小黄", 232.2, new Date()),new User(23, "小王", 232.2, new Date()),new User(24,"win7",232.2,new Date()));model.addAttribute("users",users);

获取数据

<h4>获取集合类型数据:</h4><!--遍历数据 th:each="变量(current_element当前遍历元素),变量(state遍历状态对象):集合" 遍历-->
<ul><li th:each="user,state:${users}">state count: <span th:text="${state.count}"></span>state odd : <span th:text="${state.odd}"></span>state even : <span th:text="${state.even}"></span>state size : <span th:text="${state.size}"></span>id: <span th:text="${user.id}"></span>name: <span th:text="${user.name}"></span>salary: <span th:text="${user.salary}"></span>birthday: <span th:text="${#dates.format(user.birthday,'yyyy年MM月dd日')}"></span></li>
</ul>

展示数据
在这里插入图片描述

传递条件对象

设置数据

  Integer age = 25;model.addAttribute("age", age);

获取数据

<!-- th:if="${age>=23}" 作用: 用条件展示数据-->
<div style="width: 100px;height: 100px;background: rebeccapurple;" th:if="${age>23}">我是rebeccapurple
</div>
<div style="width: 100px;height: 100px;background: greenyellow;" th:if="${age<=23}">我是greenyellow
</div>

展示数据
在这里插入图片描述

获取session作用域

设置数据

 session.setAttribute("username","小二黑");

获取数据

<h4>获取session作用域中数据: <span th:text="${session.username}"></span></h4>

展示数据
在这里插入图片描述

Thymeleaf 如何引入静态资源

使用thymeleaf模板项目中静态资源默认放在resources路径小static目录中

在这里插入图片描述

注意: @{/}代表通过thymeleaf语法动态获取应用名

   <!--th:href="@{/}"  @{/}: 获取应用名称--><link rel="stylesheet" th:href="@{/demo.css}">

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457263.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop-IDEA开发平台搭建

1.安装下载Hadoop文件 1&#xff09;hadoop-3.3.5 将下载的文件保存到英文路径下&#xff0c;名称一定要短。否则容易出问题&#xff1b; 2&#xff09;解压下载下来的文件&#xff0c;配置环境变量 3&#xff09;我的电脑-属性-高级设置-环境变量 4.详细配置文件如下&#…

2024年信息管理与工业制造与自动化国际学术会议(ICIMIMA2024)

2024年信息管理与工业制造与自动化国际学术会议(ICIMIMA2024) 会议简介 2024年信息管理与工业制造及自动化国际学术会议&#xff08;ICIMIMA2024&#xff09;将在中国三亚举行。会议旨在为信息管理和工业工程领域的专家、学者、工程师和技术人员提供一个平台&#xff0c;分享…

网神 SecGate 3600 防火墙 route_ispinfo_import_save 文件上传漏洞复现

0x01 产品简介 网神SecGate 3600防火墙是基于状态检测包过滤和应用级代理的复合型硬件防火墙,是专门面向大中型企业、政府、军队、高校等用户开发的新一代专业防火墙设备,支持外部攻击防范、内网安全、网络访问权限控制、网络流量监控和带宽管理、动态路由、网页内容过滤、邮…

回归预测 | Matlab实现ABC-BP人工蜂群算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现ABC-BP人工蜂群算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现ABC-BP人工蜂群算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现ABC-BP人工蜂群算法优化BP神经网络多变量回归预测&#x…

docker 运行jar包 指定配置文件

要在Docker中运行JAR包并指定配置文件&#xff0c;你可以创建一个Dockerfile来定义你的容器环境&#xff0c;并在其中指定如何运行JAR包和配置文件。下面是一个简单的例子&#xff0c;展示了如何在Dockerfile中设置这些配置&#xff1a; 第一步&#xff1a;创建 Dockerfile文件…

零基础学编程从入门到精通,系统化的编程视频教程上线,中文编程开发语言工具构件之缩放控制面板构件用法

一、前言 零基础学编程从入门到精通&#xff0c;系统化的编程视频教程上线&#xff0c;中文编程开发语言工具构件之缩放控制面板构件用法 编程入门视频教程链接 https://edu.csdn.net/course/detail/39036 编程工具及实例源码文件下载可以点击最下方官网卡片——软件下载—…

【Linux笔记】文件系统与软硬链接

一、文件系统概述 1.1、先来聊一聊“磁盘” 在讲解文件系统之前&#xff0c;我觉得有必要先聊一下“磁盘”&#xff0c;因为我觉得如果弄懂了磁盘的存储原理&#xff0c;大家可能更容易理解文件系统是怎么管理数据的&#xff0c;并且理解计算机是怎么将磁盘抽象到文件系统的。…

MRAM存内计算:现状及挑战

1 传统冯诺依曼瓶颈 随着人工智能、物联网、智能传感等应用的快速兴起&#xff0c;数据以爆发式的速度增长。海量数据的高效存储、迁移与处理成为当前信息领域的重大挑战。受限于经典的冯诺依曼计算架构存储与处理分离的特性&#xff0c;在面向大数据分析等应用场景中&#xff…

7.electron之渲染线程发送事件,主进程监听事件

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中&#xff0c;因此它允许你仅需一个代码仓库&#xff0c;就可以撰写支持 Windows、…

Javaweb之SpringBootWeb案例之 登录功能的详细解析

1. 登录功能 1.1 需求 在登录界面中&#xff0c;我们可以输入用户的用户名以及密码&#xff0c;然后点击 "登录" 按钮就要请求服务器&#xff0c;服务端判断用户输入的用户名或者密码是否正确。如果正确&#xff0c;则返回成功结果&#xff0c;前端跳转至系统首页面…

【C++二维前缀和】黑格覆盖

题目描述 在一张由 M * N 个小正方形格子组成的矩形纸张上&#xff0c;有 k 个格子被涂成了黑色。给你一张由 m * n 个同样小正方形组成的矩形卡片&#xff0c;请问该卡片最多能一次性覆盖多少个黑格子&#xff1f; 输入 输入共 k1 行&#xff1a; 第 1 行为 5 个整数 M、N、…

自定义npm包从vue2升级到vue3遇到的问题解决

1.执行npm run build时报错&#xff1a; (node:16724) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token ‘??’ at Loader.moduleStrategy (internal/modules/esm/translators.js:149:18 解决&#xff1a;更新node版本 查看了我使用的node版本是14.21.3&…