动力节点王鹤SpringBoot3笔记——第七章 视图技术Thymeleaf

目录

第七章  视图技术Thymeleaf

前言

7.1 表达式 

7.2  if-for


第七章  视图技术Thymeleaf

前言

Thymeleaf 是一个表现层的模板引擎, 一般被使用在 Web 环境中,它可以处理 HTML, XML、 JS 等文档,简单来说,它可以将 JSP 作为 Java Web 应用的表现层,有能力展示与处理数据。Thyme leaf 可以让表现层的界面节点与程序逻辑被共享,这样的设计, 可以让界面设计人员、业务人员与技术人员都参与到项目开发中。

这样,同一个模板文件,既可以使用浏览器直接打开,也可以放到服务器中用来显示数据,并且样式之间基本上不会存在差异,因此界面设计人员与程序设计人员可以使用同一个模板文件,来查看静态与动态数据的效果。

Thymeleaf作为视图展示模型数据,用于和用户交互操作。JSP的代替技术。比较适合做管理系统,是一种易于学习,掌握的。我们通过几个示例掌握Thymeleaf基础应用。

创建新的Spring Boot项目Lession19-Admin, Maven构建工具,JDK19。 Spring Web, Thymeleaf , Lombok依赖。包名称:com.bjpowernode.tpl

7.1 表达式 

表达式用于在页面展示数据的,有多种表达式语法,最常用的是变量表达式、链接表达式。

表达式作用例子
$ {...}变量表达式,可用于获取后台传过来的值<p th:text="${userName}">中国</p>
@ {...}链接⽹址表达式th:href="@{/css/home.css}"

 step1:创建首页在static/mian.html

静态资源默认放在static目录,Spring Boot按约定,可直接访问。main.html就是普通的HTML文件。

<html lang="en">
</head>
<body>
  <div style="margin-left: 200px">
    1.<a href="exp">表达式</a> <br/>
  </div>
</body>
</html>

step2:创建Controller,提供数据给页面

@Controller
public class ThymeleafController {

  @GetMapping("/exp")
  public String exp(Model model){
    model.addAttribute("name","动力节点IT培训");
    model.addAttribute("address","北京的大兴区");
    return "exp";
  }

  @GetMapping("/link")
  public String link(Integer id, String name,Model model){
    model.addAttribute("id",id);
    model.addAttribute("myname",name);
    return "link";
  }
}

step3:templates/目下创建Thymeleaf的文件

exp.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h3>表达式</h3>
  <div th:text="${name}"></div>
  <div th:text="${address}"></div>

  <br/>
  <a th:href="@{http://www.baidu.com}">连接到百度</a> <br/>
  <a th:href="@{/link}">连接表达式无参数</a> <br/>
  <a th:href="@{/link(id=111,name=lisi)}">连接表达式传递参数</a> <br/>

</body>
</html>

link.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h3>表达式</h3>
  id:<div th:text="${id}"></div>
  姓名:<div th:text="${myname}"></div>
</body>
</html>

7.2  if-for

Thymeaf同样支持if,for语句的使用。

表达式作用例子
th:if=“boolean表达式”th:if 当条件满足时,显示代码片段。 条件常用boolean表示,true满足,反之不满足。<div th:if=“10>2”>    显示此内容 </div>
<tr th:each=”成员遍历:${表达式}”>     <td th:text=”${成员}”> 列 </td> </tr>th:each处理循环,类似jstl中的<c:foreach><table>   <tr th:each=“item:${list}”>      <td th:text=“${item}”>    </tr> </table>

main.html

增加连接

2.<a href="if-for">if和for</a>

创建UserVO

@Data
@AllArgsConstructor
public class UserVO {
  private Integer id;
  private String name;
  private Integer age;
}

创建控制器方法

@GetMapping("if-for")
public String ifFor(Model model){
  UserVO userVO = new UserVO(10, "李四",20);
  model.addAttribute("user", userVO);

  List<UserVO> users = Arrays.asList(
      new UserVO(11, "张三",21),
      new UserVO(12, "周行",22)
  );
  model.addAttribute("users",users);
  return "base";
}

创建base.html模板页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h3>if,for 表达式</h3>
  <div th:if="${user.age > 18}">
    成年了
  </div>
  <br/>
  <table border="1">
    <thead>
      <th>id</th>
      <th>姓名</th>
      <th>年龄</th>
    </thead>
    <tbody>
      <tr th:each="u:${users}">
        <td th:text="${u.id}"></td>
        <td th:text="${u.name}"></td>
        <td th:text="${u.age}"></td>
      </tr>
    </tbody>
  </table>

</body>
</html>

浏览器访问

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

将Mircrosoft Store下载的Ubuntu安装到指定位置方法,同时解决“你需要来自System的权限才能对此文件进行更改”问题

一、概述 最近使用到WIndows的WSL功能&#xff0c;需要安装ubuntu这个子系统进行仿真环境搭建&#xff0c;但是又不愿意使用虚拟机&#xff0c;不太方便。在安装过程中发现本身就岌岌可危的C盘经常突然爆满&#xff0c;经过检查发现是安装ubuntu位置的问题。但是在系统更改存储…

网络安全从业人员应该如何提升自身的web渗透能力?

前言 web 渗透这个东西学起来如果没有头绪和路线的话&#xff0c;是非常烧脑的。 理清 web 渗透学习思路&#xff0c;把自己的学习方案和需要学习的点全部整理&#xff0c;你会发现突然渗透思路就有点眉目了。 程序员之间流行一个词&#xff0c;叫 35 岁危机&#xff0c;&am…

利用多专家模型解决长尾识别任务

来源&#xff1a;投稿 作者&#xff1a;TransforMe 编辑&#xff1a;学姐 贡献 提出了RoutIng Diverse Experts&#xff08;RIDE&#xff09;&#xff0c;不仅可以减少所有类别的variance&#xff0c;并且还可以减少尾部类的bias。同时提升了头部和尾部的性能。 思路 目前存…

nuxt.js 在IE浏览器||其他浏览不识别document/window 情况处理

1 第一步注册到nuxt.config.js文件 2 第二步建立js 文件 import Vue from vue (function(){ if(process.client){ console.log(process.client) }else{ console.log(process.client) } if (!!window.ActiveXObject || "ActiveXObject" i…

Stable Diffusion:一种新型的深度学习AIGC模型

潜在扩散模型 | AIGC| Diffusion Model 图片感知压缩 | GAN | Stable Diffusion 随着生成型AI技术的能力提升&#xff0c;越来越多的注意力放在了通过AI模型提升研发效率上。业内比较火的AI模型有很多&#xff0c;比如画图神器Midjourney、用途多样的Stable Diffusion&#…

国货之光!打工人必装的8个软件,你都用过没?|办公|效率|创作

给大家分享8款非常强大&#xff0c;但知名度不高的国产软件&#xff0c;每一个都堪称精品&#xff0c;喜欢的话记得点赞和关注哦~ 第一款是 火绒安全软件 火绒安全软件没有任何&#xff0c;具有推广性质的弹窗、没有捆绑打扰用户的行为&#xff1b;占用资源极少&#xff0c;&a…

腾讯空降测试工程师,绩效次次拿S,真是砂纸擦屁股,给我露了一手啊

​上周我们公司的绩效面谈全部结束了&#xff0c;每年到这个时间点就是打绩效的时候了&#xff0c;对于职场打工人来说绩效绝对是最重要的事情之一&#xff0c;原因也很简单&#xff1a;奖金、晋升、涨薪都和它有关系。 比如下面这个美团员工在脉脉上的自曝就很凄凉&#xff1…

Python 操作 MongoDB 详解

嗨害大家好鸭&#xff01;我是芝士❤ 一、前言 MongoDB属于 NoSQL&#xff08;非关系型数据库&#xff09;&#xff0c; 是一个基于分布式文件存储的开源数据库系统。 二、操作 MongoDB 1. 安装 pymongo python 使用第三方库来连接操作 MongoDB&#xff0c; 所以我们首先安…

Redis的SDS、intSet、Dict、ZipList、QuickList、RedisObject及五种数据结构详解

动态字符串 我们都知道Redis中保存的key是字符串&#xff0c;value 往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构 不过Redis没有直接使用C语言中的字符串&#xff0c;因为C语言字符串存在很多问题&#xff1a; 1.获取字符串长度需要进行计算 2.…

网络安全之入侵检测

目录 网络安全之入侵检测 入侵检测经典理论 经典检测模型 入侵检测作用与原理 意义 异常检测模型&#xff08;Anomaly Detection&#xff09; 误用检测模型&#xff08;Misuse Detection&#xff09; 经典特征案例 ​编辑自定义签名 ​编辑 签名检查过程 检测生命周期…

http请求类RestTemplate

RestTemplate类1.1 初识RestTemplate1.2 注入方式1.3 常用方法1.1 初识RestTemplate RestTemplate类是一个用于发送HTTP请求并获取HTTP响应的模板类。它可以被用于执行GET&#xff0c;POST&#xff0c;PUT&#xff0c;DELETE等各种HTTP方法&#xff0c;同时还支持处理请求参数…

微信小程序python+vue今日菜谱美食点赞收藏评价系统

谈到外出就餐&#xff0c;我们除了怕排队&#xff0c;也怕这家餐厅的服务员不够用&#xff0c;没人为我们点餐&#xff0c;那么一餐饭排队一小时&#xff0c;点餐恐怕也要花个半小时&#xff0c;这样不仅给消费者的用餐体验大打折扣同时也给商家的口碑造成了严重负面的影响&…

KD-2125地下电缆测试仪

一、产品概述 管线探测仪是一套高性能地下金属管线探测系统&#xff0c;由信号发射机和接收机组成&#xff0c;可用于金属管线、地下电缆的路径探测、管线普查和深度测量&#xff0c;配合多种选配附件&#xff0c;可以进行唯一性鉴别&#xff0c;以及管道绝缘破损和部分类型电缆…

在Win10安装pytorch3d

Pytorch3d 这是一个为使用Pytorch的3D计算机视觉研究提供的高效可重用的组件 主要特点包括&#xff1a; 用于储存和操作三角形网格的数据结构三角形网格的高效操作&#xff08;投影变换、图形卷积、采样、损失函数&#xff09;可区分的网格渲染器可以通过隐式函数进行新试图…

Object.defineProperty()和 Proxy的区别

众所周知&#xff0c;Object.defineProperty()和 Proxy的区别也是Vue2和Vue3响应式的区别&#xff0c;现在就聊一下为什么Proxy会替代Object.defineProperty() Object.defineProperty()&#xff1a; Object.defineProperty() 方法会直接在一个对象上定义一个新属性&#xff0…

字节8年测试经验,送给想要学习自动化测试的同学6条建议

我的职业生涯开始和大多数测试人一样&#xff0c;开始接触都是纯功能界面测试。那时候在一家电商公司做测试&#xff0c;做了有一段时间&#xff0c;熟悉产品的业务流程以及熟练测试工作流程规范之后&#xff0c;效率提高了&#xff0c;工作比较轻松&#xff0c;也得到了更好的…

MyBatisPlus-DQL编程控制

MyBatisPlus-DQL编程控制3&#xff0c;DQL编程控制3.1 条件查询3.1.1 条件查询的类3.1.2 环境构建3.1.3 构建条件查询3.1.4 多条件构建3.1.5 null判定3.2 查询投影3.2.1 查询指定字段3.2.2 聚合查询3.2.3 分组查询3.3 查询条件3.3.1 等值查询3.3.2 范围查询3.3.3 模糊查询3.3.4…

堆来咯!!!

堆是什么&#xff1f; 是土堆吗&#xff1f; 那当然不是啦~ 堆是一种被看作完全二叉树的数组。 那么什么是完全二叉树呢&#xff1f; 如果二叉树中除去最后一层节点为满二叉树&#xff0c;且最后一层的结点依次从左到右分布&#xff0c;则此二叉树被称为完全二叉树。 堆的特…

中国版的ChatGPT,你最看好谁?

一、百度&#xff1a;文心一言升级中&#xff0c;未来支持开源 3月16日&#xff0c;百度正式推出国内首款生成式AI产品“文心一言”&#xff0c;可支持文学创作、文案创作、数理推算、多模态生成等功能。 “文心一言”基于全栈自研的AI基础设施进行学习和训练&#xff1a; ①…

selenium自动化测试面试题【含答案】

目录 1、selenium中如何判断元素是否存在&#xff1f; 2、selenium中hidden或者是display &#xff1d; none的元素是否可以定位到&#xff1f; 3、selenium中如何保证操作元素的成功率&#xff1f;也就是说如何保证我点击的元素一定是可以点击的&#xff1f; 4、如何提高s…