Thymeleaf同jsp、volocity、freemarker等共同的职能是MVC模式中的视图展示层,即View。

当然了,SpringBoot中也可以用jsp,不过不推荐这种用法,比较推崇的就是使用Thymeleaf。

关于Thymeleaf学习,建议参考官方文档:https://www.thymeleaf.org/documentation.html

官方文档例子,应有尽有。

之前接触过Thymeleaf是因为公司项目初建期间用过它搭建过测试环境,后来根据领导的指示,需要快速开发,而且当时对于Thymeleaf不是十分了解,当时对于它的了解认识只是展示前端数据的,同jsp职能一样,当然这也是它们的共性。比较详细的深入了解和使用,是帮助一位学妹解决毕业论文的项目问题。那时帮助她写了好十几个类代码和对应的十几个html代码。当时感触比较深的是,Thymeleaf是如此的好用,比jsp还好用,jsp要遍历之类,要么加<%%>,或者引用jstl标签库进行数据遍历等。而Thymeleat就不需要。简洁直观,我比较推崇Thymeleaf,特别是在前后端分离的项目,有的时候不用jsp,光纯html+js的确有点吃力,即便使用了vue.js或者angular.js、react.js等虽然增加了便利性,但是了,如果一个项目前端语言不是十分统一的话,对于将来维护成本方面会大大提高,不易维护。

Thymeleaf对于前后端分离,我认为还是不错的。

下面进入demo例子讲解:

一、导入maven依赖

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.springframework</groupId><artifactId>gs-uploading-files</artifactId><version>0.1.0</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.8.RELEASE</version></parent><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</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-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

二、编写实体

package hello;public class User {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

三、编写Controller

package hello;import java.util.ArrayList;
import java.util.List;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;@Controller
public class TestController {@GetMapping(value="/test")public String test(Model model) {List<User> userList = new ArrayList<User>();for (int i = 0; i <10; i++) {User user =new User();user.setId(1);user.setName("张三");userList.add(user);}model.addAttribute("users", userList);return "test";}
}

四、编写配置文件,将其放置在/src/main/resources下

application.properties

server.port=8080
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.check-template-location=true
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.mode=HTML5

五、在src/main/resources目录下新建templates目录并新建html文件

test.htm

<html xmlns:th="http://www.thymeleaf.org">
<body><h2>用户列表</h2><div><ul><li  th:each="user:${users}"><span th:text="${user.id}"></span>-<span th:text="${user.name}"></span>-</li></ul></div>
</body>
</html>

六、编写启动类

package hello;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

最后结果如下图所示:

这里没有加入mysql或者其他数据相关的,如果要引用数据库,引用对应数据库的依赖和配置对应的数据库连接池即可。

这里可以参考我的关于Springboot+MyBatis+Thymeleaf

示例地址为:https://github.com/youcong1996/springboot-mybatis-demo

转载于:https://www.cnblogs.com/youcong/p/9385918.html

SpringBoot实战(五)之Thymeleaf相关推荐

  1. 【项目实战】个人博客(SpringBoot,SSM,thymeleaf,Semantic UI)——从设计思路到部署一站式教学

    一.前言 1.项目背景 此项目并非原创,项目原型是李仁密老师的作品,具体的教学视频来自b站https://www.bilibili.com/video/BV1nE411r7TF,不过up主貌似也是搬运 ...

  2. SpringBoot 实战 (十二) | 整合 thymeleaf

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 Thymeleaf ,并整合 Thymeleaf 开发一个简陋版的学生信息管理系统. Spring ...

  3. 视频教程-SpringBoot实战开发视频-Java

    SpringBoot实战开发视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥69.00 立即订阅 扫码下载「CSD ...

  4. 微服务Springboot实战大揭秘/高并发/高可用/高负载/互联网技术-任亮-专题视频课程...

    微服务Springboot实战大揭秘/高并发/高可用/高负载/互联网技术-320人已学习 课程介绍         Java架构师系列课程是针对有志向架构师发展的广大学员而设置,不管你是工作一到三年, ...

  5. SpringBoot 实战:如何从零开发 “淘宝”

    疫情期间,不少人选择宅家购物. 但当你每天在"淘宝""京东""网易考拉"上剁手买买买,钱包瘪下去的时候,有没有考虑一下自己开发个商城呢? 钱 ...

  6. springboot实战pdf_Java程序员中秋节福利发送:Spring boot+Redis实战文档「PDF」

    中秋节越来越近了,平日里,各大公司拼员工拼技术拼实力:到了节日,则要拼奖金.拼福利.拼假期,还要拼创意.今天,小编为大家也准备了一份中秋节礼物,让我们一起来看看礼物是啥吧! Spring boot文档 ...

  7. springboot springmvc mybatis_深圳嘉华学校之springboot实战教程

    Springboot实战教程 目录 第一章 springBoot概述... 2 href="https://zhuanlan.zhihu.com/write#_Toc508178432&qu ...

  8. 视频教程-SpringBoot实战视频教程-Java

    SpringBoot实战视频教程 书籍<分布式中间件技术实战 Java版>的作者,拥有6年Java后端开发经验和2年项目管理经验,熟悉Java领域流行技术,拥有多个微服务.分布式项目实战. ...

  9. Redis由浅到深层次讲解和springboot实战(服务器层面的搭建部署)

    Redis由深层次讲解到springboot实战 一.Nosql概述 为什么使用Nosql 1.单机Mysql时代 90年代,一个网站的访问量一般不会太大,单个数据库完全够用.随着用户增多,网站出现以 ...

最新文章

  1. C语言的单链表创建:头插法/尾插法
  2. 重构风险程序员一定要遵守的规则
  3. Android Studio连接天天模拟器
  4. 通过共享内存进行进程间通信
  5. 为了用户体验,不要做浏览器兼容
  6. Boost:测试bind <void>
  7. 安装配置好openstack环境的虚拟机,须要改动ip时,在数据库中同步改动ip的方法...
  8. 动态路由协议(RIP)
  9. 详解div+css相对定位和绝对定位用法
  10. 福建品品香茶业有限公司业务迁移上云
  11. Exception in thread main java.lang.NoClassDefFoundError: scala/Product$class
  12. 用视频作为Mac动态壁纸Dynamic Wallpaper
  13. 论文阅读笔记(八)——Ultra-thin MobileNet
  14. 工业机器人技术试题_工业机器人考试试题库
  15. 第一次申请赴美商务签经历
  16. 【Hash篇】什么是哈希值?
  17. 哪里可以在线观看《人再囧途之泰囧》
  18. 详解与重构hyman《Android SurfaceView实战 打造抽奖转盘》
  19. 行业分析-全球与中国3D自动X射线检测(AXI)市场现状及未来发展趋势
  20. 点量云流化具有哪些特色

热门文章

  1. java字符串底层实现_「JAVA」细述合理创建字符串,分析字符串的底层存储,你不该错过...
  2. 7445 oracle,Oracle 10g impdp 报 ORA-7445 [_INTEL_FAST_MEMCPY.A] 解决方法
  3. js如何监听元素事件是否被移除_JavaScript 监听元素是否进入/移出可视区域
  4. c语言测试清单,c语言测试(C language test).doc
  5. 后缀为frm是什么文件_Shell 点文件可以为你做点什么
  6. triplet loss后面不收敛_你的神经网络真的收敛了么?
  7. python随机抽取人名_python实现艾宾浩斯背单词功能,实现自动提取单词、邮件发送,再也不用担心背单词啦...
  8. y空间兑换代码_Python爬虫实战:QQ空间全自动点赞工具
  9. mime类型是什么 node_Node.js - 文件系统获取文件类型
  10. hash值 更改git_Git切换版本