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

Spring Boot集成thymeleaf快速入门demo

1.什么是thymeleaf?

Thymeleaf是一种现代的服务器侧Java模版引擎,既能用于网络,也能用于独立的环境。它能够处理HTML,XML,JavaScript,CSS,甚至纯文本。

Thymeleaf的主要目标是为创建模版提供一种优雅、高️维护性的方法。为了实现这个目标,它建立在自然模版的观念之上。也就是以某种方式将它的逻辑注入模版文件之中,而不会影响模版作为一个设计原型被使用。这改善了设计上的交流,同时也在设计和开发团队之间架起了一座桥梁。

Thymeleaf的特点

  • Thymeleaf具有可读性强、易于理解的语法。
  • Thymeleaf支持Spring MVC的所有特性,可以与Spring框架无缝集成。
  • Thymeleaf可以在没有Web服务器的情况下运行,便于开发和测试。
  • Thymeleaf支持多种模板解析器,可以根据需要选择合适的解析器。

Thymeleaf的应用场景

Thymeleaf 是一款适用于各种 Web 应用程序的强大模板引擎,无论是传统的服务器端 Web 应用程序、单页应用程序,还是移动 Web 应用程序,都能够轻松应对。此外,Thymeleaf 不仅局限于动态内容的生成,还可以用于生成静态内容,如电子邮件模板等,为开发者提供了极大的便利和灵活性。

2.代码工程

实验目的:用Thymeleaf作为模版输出页面html

pom.xml

<?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"><parent><artifactId>springboot-demo</artifactId><groupId>com.et</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>thymeleaf</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>

controller

package com.et.thymeleaf.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;import java.util.HashMap;
import java.util.Map;@Controller
public class HelloWorldController {@RequestMapping("/")public String index(){return"index";}@RequestMapping(value="/save", method= RequestMethod.POST)public ModelAndView save(@ModelAttribute User user){ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("result");modelAndView.addObject("user", user);return modelAndView;}
}

entity

package com.et.thymeleaf.controller;import lombok.Data;/*** @author liuhaihua* @version 1.0* @ClassName User* @Description todo* @date 2024年06月03日 10:48*/
@Data
public class User {private String name;private int  age;private String email;}

application.properties

spring.thymeleaf.cache=false
spring.thymeleaf.suffix: .html

index.html

<html lang="en">
<head><title>Index Page</title>
</head>
<body>
<form action="save" method="post"><table><tr><td><label for="user-name">User Name</label></td><td><input type="text" name="name"></input></td></tr><tr><td><label for="email">Email</label></td><td><input type="text" name="email"></input></td></tr><tr><td></td><td><input type="submit" value="Submit"></input></td></tr></table>
</form>
</body>
</html>

result.html

<html xmlns:th="https://thymeleaf.org">
<table><tr><td><h4>User Name: </h4></td><td><h4 th:text="${user.name}"></h4></td></tr><tr><td><h4>Email ID: </h4></td><td><h4 th:text="${user.email}"></h4></td></tr>
</table>
</html>

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • GitHub - Harries/springboot-demo: a simple springboot demo with some components for example: redis,solr,rockmq and so on.

3.测试

启动Spring Boot应用

测试模版

  • 访问http://127.0.0.1:8080/ 输入参数,
  • 点击提交自动跳转到http://127.0.0.1:8080/save,并且展示前一个页面输入的参数

4.引用

  • Thymeleaf

相关文章:

  • MathType7.9最新免费注册机注册码激活码分享
  • 知识图谱应用---智慧医疗
  • 速盾:DDoS高防IP上设置转发规则
  • TechM-技术网站
  • 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(三)
  • pymupdf提取pdf表格及表格数据合并
  • 高舒适性气膜网球馆的注意事项—轻空间
  • JSP与Servlet的区别
  • vscode编译文件夹下所有文件的配置(包含插件和 .json 文件)
  • 现阶段对于伪造检测的重难点--泛化
  • 【C++PCL】点云处理KD-ICP配准
  • C# 类型系统
  • 异步通知驱动实例
  • 数据可视化---使用matplotlib绘制高级图表(2)
  • MySQL—多表查询(概述、基本实操、分类)
  • Android交互
  • JAVA 学习IO流
  • Java读取Properties文件的六种方法
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • React as a UI Runtime(五、列表)
  • vue-cli在webpack的配置文件探究
  • vue的全局变量和全局拦截请求器
  • Vue实战(四)登录/注册页的实现
  • 关于springcloud Gateway中的限流
  • 技术胖1-4季视频复习— (看视频笔记)
  • 码农张的Bug人生 - 见面之礼
  • 七牛云假注销小指南
  • 实现简单的正则表达式引擎
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​Linux·i2c驱动架构​
  • #100天计划# 2013年9月29日
  • #Linux(make工具和makefile文件以及makefile语法)
  • $GOPATH/go.mod exists but should not goland
  • (11)iptables-仅开放指定ip访问指定端口
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (理论篇)httpmoudle和httphandler一览
  • (六)c52学习之旅-独立按键
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)UDP基本编程步骤
  • (一)认识微服务
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (正则)提取页面里的img标签
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .Net 6.0 处理跨域的方式
  • .net 8 发布了,试下微软最近强推的MAUI
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net Signalr 使用笔记
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net 获取url的方法
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法