Thymeleaf的介绍

进行JavaWeb开发时主要用到的是JSP,传统的JSP需要在页面中加入大量的JSTL标签,这些标签只能运行在服务器中,前端开发人员维护这些页面比较困难,页面加载速度也比较慢。 Thymeleaf是一种全新的页面模板引擎,在Thymeleaf中使用的标签都是基本的HTML标签,可以脱离服务器独立运行,这样前端开发人员可以维护静态页面,后台开发人员将数据绑定上去,利于分工合作,Thymeleaf的语法也比较简洁优雅,比较容易使用。

SpringMVC整合Thymeleaf

下面介绍下在SpringMVC框架中如何使用Thymeleaf:<br>

1. 首先使用Maven导入需要的库:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>

说明:spring-context、spring-web、spring-webmvc是Spring和SpringMVC的相关库,thymeleaf是Thymeleaf模板库thymeleaf-spring4是Spring整合Thymeleaf所需的库。

1. 在SpringMVC的配置文件中添加:

<!--thymeleaf模板解析器-->
<bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
<!--前缀配置-->
<property name="prefix" value="/WEB-INF/"></property>
<!--后缀配置-->
<property name="suffix" value=".html"></property>
<!--模板类型-->
<property name="templateMode" value="HTML"></property>
<!--不使用缓存-->
<property name="cacheable" value="false"></property>
<!--编码类型-->
<property name="characterEncoding" value="UTF-8"></property>
</bean>
<!--模板引擎配置-->
<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver"></property>
</bean>
<!--视图处理器-->
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine"></property>
<property name="characterEncoding" value="UTF-8"></property>
</bean>

1. 添加实体类和Controller类

//商品类
public class Goods{
private int id;
private String name;
private double price;
private String type;
//set\get...
}
//商品控制器
@Controller
public class GoodsController {

@RequestMapping("/goods")
public String test1(Model model){
//添加
List<Goods> goods = new ArrayList<>();
goods.add(new Goods(1,"小米9手机",3999,"数码");
goods.add(new Goods(2,"小米8手机",2999,"数码");
goods.add(new Goods(3,"小米7手机",1999,"数码");
model.addAttribute("goods",goods);
return "goods";
}
}

1. 编写Thymeleaf页面

在html标签中加入命名空间:

<html xmlns:th="http://www.thymeleaf.org">

使用表格显示后台数据:

<table>
<tr th:each="g:${goods}">
<td th:text="${g.id}">1</td>
<td th:text="${g.name}">牙膏</td>
<td th:text="${g.price}">200</td>
<td th:text="${g.type}">100</td>
</tr>
</table>

1. 启动服务器,输入URL后可以看到Thymeleaf将后台数据展示到页面中

Thymeleaf的属性用法

前面案例中th:each是将标签进行循环迭代,绑定集合中的数据;th:text是用来绑定每个对象的文本数据。 我们在看看还有哪些常用的属性:

1、变量,这种写法类似EL表达式和OGNL:
<h1 th:text="${msg}">Test</h1>
如果变量是user对象,可以写成:
<h1 th:text="${user.name}">Test</h1>
注意:h1标签之间的内容是静态页面显示的,当连接上服务器后会被替换为th:text中的内容。

2、超链接
使用th:href标签,内容格式是@{...}
如:<a href=”index.html” th:href=”@{http://localhost:8080/list(uid=${user.id})}”>测试</a>
注意:这里list(uid=${user.id})会被替换为list?uid=8类似的格式

3、文本替换
<p th:text="'Welcome , ' + ${user.name} + '!'">xxx</p>
或:
<p th:text="|Welcome , ${user.name}!|">xxx</p>

4、运算符 
Java中的算术运算符、关系运算符、逻辑运算符等都可以使用,
不过在使用<和>时由于是特殊符号,需要进行转义:
th:if="${count} &gt; 1"
th:text="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')"

5、循环
th:each=”变量:${集合对象}”
<table>
<tr th:each="emp : ${empList}">
<td th:text="${emp.id}">1</td>
<td th:text="${emp.name}">张三</td>
<td th:text="${emp.age}">18</td>
</tr>
</table>

6、条件
th:if和th:unless,th:if是条件成立是显示标签,th:unless则相反
下面标签的效果相同,都是当user为空时显示Login超链接
<a th:href=”@{/login}” th:if=”${user==null}”>Login</a>
<a th:href=”@{/login}” th:unless=”${user!=null}”>Login</a>

7、switch
<div th:switch="${user.role}">
<p th:case="'admin'">User is an administrator</p>
<p th:case="'manager'">User is a manager</p>
<p th:case="*">User is some other thing</p>
</div>

以上就是Thymeleaf的基本用法,可以看到Thymeleaf的用法比较简单,可以很好的代替JSP完成页面开发。

SpringMVC整合Thymeleaf的更多相关文章

  1. 【springmvc thymeleaf】springmvc整合thymeleaf

    概述 Thymeleaf提供了一组Spring集成,使您可以将其用作Spring MVC应用程序中JSP的全功能替代品. 这些集成将使您能够: @Controller像使用JSP一样,将Spring ...

  2. 【Springboot】Springboot整合Thymeleaf模板引擎

    Thymeleaf Thymeleaf是跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它主要有以下几个特点: 1. Thymeleaf在有网络和无 ...

  3. Springboot整合thymeleaf模板

    Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用. Thymeleaf的主要目标在于提供一种可被浏览器正确显示的.格式良好的模板创建方式,因此也可以用作静态建 ...

  4. Spring Boot2 系列教程 (十二) | 整合 thymeleaf

    前言 如题,今天介绍 Thymeleaf ,并整合 Thymeleaf 开发一个简陋版的学生信息管理系统. SpringBoot 提供了大量模板引擎,包含 Freemarker.Groovy.Thym ...

  5. SpringBoot 整合thymeleaf

    1.Thymeleaf介绍(官网推荐:https://www.thymeleaf.org/doc/articles/thymeleaf3migration.html) Thymeleaf是跟Veloc ...

  6. (转)Dubbo与Zookeeper、SpringMVC整合和使用

    原文地址: https://my.oschina.net/zhengweishan/blog/693163 Dubbo与Zookeeper.SpringMVC整合和使用 osc码云托管地址:http: ...

  7. SSM整合(三):Spring4与Mybatis3与SpringMVC整合

    源码下载 SSMDemo 上一节整合了Mybatis3与Spring4,接下来整合SpringMVC! 说明:整合SpringMVC必须是在web项目中,所以前期,新建的就是web项目! 本节全部采用 ...

  8. Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)

    互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...

  9. springmvc整合fastjson

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

随机推荐

  1. react router @4 和 vue路由 详解(七)react路由守卫

    完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 12.react路由守卫? a.在之前的版本中,React Router 也提供了类似的 ...

  2. java string字符拼接符"+"的研究

    程序: public class Test { public static void main(String args[]) { String s1 = "abc"; String ...

  3. windows下的pycharm配置 linux环境

    由于最近学习python的需要,为了方便程序的调试,尝试在Windows下的Pycharm远程连接到虚拟机中Centos下的python环境.(这里我采用的是ssh的远程连接)1.准备工作: 固定ce ...

  4. 3.1 C++继承的概念及语法

    参考:http://www.weixueyuan.net/view/6358.html. 总结: 继承可以理解为一个类从另一个类获取方法(函数)和属性(成员变量)的过程. 被继承的类称为父类或基类,继 ...

  5. 从今天开始 每天记录HTML,CSS 部分的学习笔记

    从今天开始 每天记录HTML,CSS 部分的学习笔记

  6. <容错性FaultTolerance><Hadoop><Spark>

    Overview 讨论一些常见大数据框架的容错机制 Fault Tolerance in Hadoop MapReduce Heartbeat心跳机制:如果在一定时间内没有收到心跳,则reschedu ...

  7. Linux:进程

    进程 一.简略操作 1.查看进程:ps2.查看进程资源占用量:top3.查看进程关系(进程树):pstree4.查看当前系统信息:uname -a 二.详细操作 1.查看进程:ps 2.查看进程资源占 ...

  8. shell脚本实例-for实现批量主机的探测

    #!/usr/bin/bash >ip.txt for i in {2..254} do { ip=192.168.234.$i ping -c1 -W1 $ip &>/dev/n ...

  9. MFC 添加背景图片并让控件背景透明

    /*添加背景图片*/ BOOL CTOOLDlg::OnEraseBkgnd(CDC* pDC) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CDialog::OnEraseBkg ...

  10. error_log

    对于我们做php开发的人员,上了生产环境,一定要把相关debug,display_errors错误提示等关掉.谁还难免不犯个错呢?这样能防止非致命性报错下,导致项目路径.数据库等信息泄漏. 问:那么问 ...