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

SpringBoot Web开发----Thymeleaf的简单入门

Thymeleaf的入门

  • 1.引入thymeleaf的依赖
  • 2. 简单页面开发

1.引入thymeleaf的依赖

	<dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

引入thymeleaf后,SpringBoot已经将thymeleaf自动配置好了

自动配置好的策略:

  • 所有thymeleaf的配置值都在ThymeleafProperties
  • 配置好了SpringTemplateEngine(模板引擎)
  • 配置好了ThymeleafViewResolver(视图解析器)
  • 我们只需要直接开发页面就行
  • 页面一般都在templates里面放着,都是.html文件

在这里插入图片描述

2. 简单页面开发

Hello.html的代码:

<!DOCTYPE html>
<!-- 在这里要引入一个xml:th="http://www.thymeleaf.org的命名空间 -->
<html lang="en" xml:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1 th:text="${msg}">哈哈</h1>
    <h2>
        <a href="www.haha.com" th:href="${link}">去百度</a> <br>
    </h2>
</body>
</html>

controller里面的代码:

@Controller
public class ViewController {
    @GetMapping("/hello")
    public String hello(Model model){
        //model的数据会被放在请求域当中
        model.addAttribute("msg","你好!");
        model.addAttribute("link","http://www.baidu.com");
        return "Hello";
    }
}

最后当我们启动项目,地址栏输入localhost:8080/hello就能访问到我们的前端页面

在这里插入图片描述

可以发现我们得到的不是前端代码中的 哈哈,而是动态渲染后的 你好,是从th:text="${msg}" 中取出的数据 ${真正的数据}

点击 去百度 会访问到的不是www.haha.com,而是百度的主页,是从th:href="${link}"取出的数据 ${真正访问的网页}

msglink的数据来自于后端controller层ViewController类里的代码:

model.addAttribute("msg","你好!");
model.addAttribute("link","http://www.baidu.com");

相关文章:

  • Object Detection in 20 Years: A Survey
  • 出现次数最多的数字和次数
  • 多账号自动下单
  • opencv调整图像亮度和对比度,以及opencv种的做法
  • django之静态文件配置 请求方式 request对象方法 pycharm连接数据库 django连接MySQL 初识ORM
  • 自动控制原理6.3---串联校正
  • Windows下Jenkins的运行环境由Java8 升级为Java11
  • Linux中用户组管理
  • 【前端】html+js+css开发入门超详细介绍
  • 车企上市只是时间问题,零跑只是抢先一步而已
  • 软件工程考试选择题:模块的扇入扇出 深度宽度
  • 黑马C++ 02 核心5 —— 类和对象_运算符重载(重难点)
  • 移动办公平台迎来定制潮,WorkPlus如何在钉钉和企微光环下 “出圈”?
  • Keras - ModelCheckpoint
  • 【零基础学Python】Day10 Python解释器
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 07.Android之多媒体问题
  • 2017 年终总结 —— 在路上
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JDK 6和JDK 7中的substring()方法
  • Netty源码解析1-Buffer
  • SQLServer之创建显式事务
  • Zepto.js源码学习之二
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 聊聊directory traversal attack
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 首页查询功能的一次实现过程
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微信公众号开发小记——5.python微信红包
  • 小程序开发之路(一)
  • 怎么把视频里的音乐提取出来
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • %@ page import=%的用法
  • (1)(1.13) SiK无线电高级配置(六)
  • (vue)页面文件上传获取:action地址
  • (第二周)效能测试
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (转)Mysql的优化设置
  • (转)winform之ListView
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET单元测试
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .Net小白的大学四年,内含面经
  • .Net中的集合
  • .net中生成excel后调整宽度
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • [20171113]修改表结构删除列相关问题4.txt
  • [AAuto]给百宝箱增加娱乐功能
  • [BetterExplained]书写是为了更好的思考(转载)