SpringBoot实战(五)之Thymeleaf
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相关推荐
- 【项目实战】个人博客(SpringBoot,SSM,thymeleaf,Semantic UI)——从设计思路到部署一站式教学
一.前言 1.项目背景 此项目并非原创,项目原型是李仁密老师的作品,具体的教学视频来自b站https://www.bilibili.com/video/BV1nE411r7TF,不过up主貌似也是搬运 ...
- SpringBoot 实战 (十二) | 整合 thymeleaf
微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 Thymeleaf ,并整合 Thymeleaf 开发一个简陋版的学生信息管理系统. Spring ...
- 视频教程-SpringBoot实战开发视频-Java
SpringBoot实战开发视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥69.00 立即订阅 扫码下载「CSD ...
- 微服务Springboot实战大揭秘/高并发/高可用/高负载/互联网技术-任亮-专题视频课程...
微服务Springboot实战大揭秘/高并发/高可用/高负载/互联网技术-320人已学习 课程介绍 Java架构师系列课程是针对有志向架构师发展的广大学员而设置,不管你是工作一到三年, ...
- SpringBoot 实战:如何从零开发 “淘宝”
疫情期间,不少人选择宅家购物. 但当你每天在"淘宝""京东""网易考拉"上剁手买买买,钱包瘪下去的时候,有没有考虑一下自己开发个商城呢? 钱 ...
- springboot实战pdf_Java程序员中秋节福利发送:Spring boot+Redis实战文档「PDF」
中秋节越来越近了,平日里,各大公司拼员工拼技术拼实力:到了节日,则要拼奖金.拼福利.拼假期,还要拼创意.今天,小编为大家也准备了一份中秋节礼物,让我们一起来看看礼物是啥吧! Spring boot文档 ...
- springboot springmvc mybatis_深圳嘉华学校之springboot实战教程
Springboot实战教程 目录 第一章 springBoot概述... 2 href="https://zhuanlan.zhihu.com/write#_Toc508178432&qu ...
- 视频教程-SpringBoot实战视频教程-Java
SpringBoot实战视频教程 书籍<分布式中间件技术实战 Java版>的作者,拥有6年Java后端开发经验和2年项目管理经验,熟悉Java领域流行技术,拥有多个微服务.分布式项目实战. ...
- Redis由浅到深层次讲解和springboot实战(服务器层面的搭建部署)
Redis由深层次讲解到springboot实战 一.Nosql概述 为什么使用Nosql 1.单机Mysql时代 90年代,一个网站的访问量一般不会太大,单个数据库完全够用.随着用户增多,网站出现以 ...
最新文章
- C语言的单链表创建:头插法/尾插法
- 重构风险程序员一定要遵守的规则
- Android Studio连接天天模拟器
- 通过共享内存进行进程间通信
- 为了用户体验,不要做浏览器兼容
- Boost:测试bind <void>
- 安装配置好openstack环境的虚拟机,须要改动ip时,在数据库中同步改动ip的方法...
- 动态路由协议(RIP)
- 详解div+css相对定位和绝对定位用法
- 福建品品香茶业有限公司业务迁移上云
- Exception in thread main java.lang.NoClassDefFoundError: scala/Product$class
- 用视频作为Mac动态壁纸Dynamic Wallpaper
- 论文阅读笔记(八)——Ultra-thin MobileNet
- 工业机器人技术试题_工业机器人考试试题库
- 第一次申请赴美商务签经历
- 【Hash篇】什么是哈希值?
- 哪里可以在线观看《人再囧途之泰囧》
- 详解与重构hyman《Android SurfaceView实战 打造抽奖转盘》
- 行业分析-全球与中国3D自动X射线检测(AXI)市场现状及未来发展趋势
- 点量云流化具有哪些特色
热门文章
- java字符串底层实现_「JAVA」细述合理创建字符串,分析字符串的底层存储,你不该错过...
- 7445 oracle,Oracle 10g impdp 报 ORA-7445 [_INTEL_FAST_MEMCPY.A] 解决方法
- js如何监听元素事件是否被移除_JavaScript 监听元素是否进入/移出可视区域
- c语言测试清单,c语言测试(C language test).doc
- 后缀为frm是什么文件_Shell 点文件可以为你做点什么
- triplet loss后面不收敛_你的神经网络真的收敛了么?
- python随机抽取人名_python实现艾宾浩斯背单词功能,实现自动提取单词、邮件发送,再也不用担心背单词啦...
- y空间兑换代码_Python爬虫实战:QQ空间全自动点赞工具
- mime类型是什么 node_Node.js - 文件系统获取文件类型
- hash值 更改git_Git切换版本