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. oo作业总结(四)

    测试与正确性论证 测试是通过构造一系列测试数据,通过对比程序的实际运行结果和预期输出结果来判断程序是否有bug的一种手段.同时,在测试的时候是默认看不到程序的具体实现的,即进行黑盒测试,例如每次OO作 ...

  2. mysql存储过程中使用游标

    用户变量一般以@开头,作用于全局范围 局部变量需用 declare 定义格式为 declare 变量名 数据类型 [default value]; mysql 数据类型有 int ,float,dat ...

  3. Cracking The Coding Interview 9.3

    //Given a sorted array of n integers that has been rotated an unknown number of times, give an O(log ...

  4. python列表、集合、元祖、字典推导式

    a = [1, 2, 3, 4, 5, 6, 7, 8]l=[i**2 for i in a if i**2>=16] #列表推导式+if判断print(l)print(type(l)) b={ ...

  5. div 自适应高度

    自适应高度 ,设置最小高度:通常情况下,没有设置高度,div默认自适应高度且无最低高度 1 div{ _height:200px; /* css 注解: 仅IE6设别此属性,假定最低高度是200px ...

  6. DevExpress WPF v18.2新版亮点(五)

    买 DevExpress Universal Subscription  免费赠 万元汉化资源包1套! 限量15套!先到先得,送完即止!立即抢购>> 行业领先的.NET界面控件2018年第 ...

  7. 牛客多校第四场 A Ternary String

    题目描述 A ternary string is a sequence of digits, where each digit is either 0, 1, or 2. Chiaki has a t ...

  8. SQL拼接大法

    SQL拼接大法:          Step1:括号先写上() Step2:在括号内写上(,     ,     ,     ,      ,     ,) Step3:再写上单引号(,'     ' ...

  9. scrapy框架发送post请求

    注:scrapy框架默认发送get请求 1.想要发送post请求,那么推荐使用‘scrapy.FormRequest’方法.可以方便的制定表单数据.request = scrapy.FormReque ...

  10. Java学习笔记26(异常)

    异常的定义: Java代码在运行过程中发生的问题就是异常 异常类:出现问题就会常见异常类对象,并抛出异常的相关信息,异常的位置,原因 异常体系: Throwable类是java中所有错误或异常的父类 ...