《深入实践Spring Boot》一3.3 使用Thymeleaf模板

3.3 使用Thymeleaf模板

完成了模型和控制器的设计之后,接下来的工作就是视图设计了。在视图设计中主要使用Thymeleaf模板来实现。在进行视图设计之前,先了解一下Thymeleaf模板的功能。
Thymeleaf是一个优秀的面向Java的XML/XHTML/HTML 5页面模板,并具有丰富的标签语言和函数。使用Spring Boot框架进行界面设计,一般都会选择Thymeleaf模板。

3.3.1 Thymeleaf配置

要使用Thymeleaf模板,首先,必须在工程的Maven管理中引入它的依赖:“spring-boot-starter-thymeleaf”,如代码清单3-9所示。
代码清单3-9 Thymeleaf依赖配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

其次,必须配置使用Thymeleaf模板的一些参数。在一般的Web项目中都会使用如代码清单3-10所示的配置,其中,pref?ix指定了HTML文件存放在webapp的/WEB-INF/views/目录下面,或者也可以指定其他路径,其他一些参数的设置其实是使用了Thymeleaf的默认设置。
在实例中,为了更方便将项目发布成jar文件,我们将使用Thymeleaf自动配置中的默认配置选项,即只要在资源文件夹resoueces中增加一个templates目录即可,这个目录用来存放HTML文件。
代码清单3-10 Thymeleaf配置

spring:
    thymeleaf:
        prefix: /WEB-INF/views/
        suffix: .html
        mode: HTML5
        encoding: UTF-8
        content-type: text/html
        cache: false

如果工程中增加了Thymeleaf的依赖,而没有进行任何配置,或者增加默认目录,启动应用时就会报错。

3.3.2 Thymeleaf功能简介

在HTML页面上使用Thymeleaf标签语言,用一个简单的关键字“th”来标注。使用Thymeleaf标签语言的典型例子如下:

<h3 th:text="${actor.name}"></h3>
<img th:src="@{/images/logo.png}"/>

其中,th:text指定了在标签<中显示的文本,它的值来自于关键字“$”所引用的内存变量,th:src设定了标签的图片文件的链接地址,既可以是绝对路径,也可以是相对路径。下面列出了Thymeleaf的一些主要标签和函数。
th:text,显示文本。
th:utext:和th:text的区别是针对"unescaped text"。
th:attr:设置标签属性。
th:if or th:unless:条件判断语句。
th:switch,th:case:选择语句。
th:each:循环语句。

dates:日期函数。

calendars:日历函数。

numbers:数字函数。

strings:字符串函数。

objects:对象函数。

bools:逻辑函数。

arrays:数组函数。

lists:列表函数。

本章的实例工程将在视图设计中使用Thymeleaf的下列几个主要功能,而有关Thymeleaf的详细说明和介绍可以访问它的官方网站http://www.thymeleaf.org/,以获得更多的帮助。
1.使用功能函数
Thymeleaf有一些日期功能函数、字符串函数、数组函数、列表函数等,代码清单3-11是Thymeleaf使用日期函数的一个例子,#dates.format是一个日期格式化的使用实例,它将电影的创建日期格式化为中文环境的使用格式“'yyyy-MM-dd HH:mm:ss'”。
代码清单3-11 Thymeleaf使用函数

th:value="${movie.createDate} ? ${#dates.format(movie.createDate,'yyyy-MM-dd HH:mm:ss')} :''"

2.使用编程语句
Thymeleaf有条件语句、选择语句、循环语句等。代码清单3-12使用each循环语句来显示一个数据列表,即在下拉列表框中使用循环语句来显示所有的演员列表。
代码清单3-12 th:each循环

<select name="actorid" id="actorid">
<option value="">选择演员</option>
<option th:each="actor:${actors}"
    th:value="${actor.id}"
    th:text="${actor.name}">
</option>
</select>

3.使用页面框架模板
Thymeleaf的页面框架模板是比较优秀的功能。预先定义一个layout,它具有页眉、页脚、提示栏、导航栏和内容显示等区域,如代码清单3-13所示。其中,layout:fragment=
" prompt"是一个提示栏,它可以让引用的视图替换显示的内容;fragments/nav :: nav是一个导航栏并指定了视图文件,也就是说它不能被引用的视图替换内容;layout:fragment="content"是一个主要内容显示区域,它也能由引用的视图替换显示内容;fragments/footer :: footer是一个页脚定义并且也指定了视图文件,即不被引用的视图替换显示内容。这样设计出来的页面模板框架如图3-1所示。
代码清单3-13 layout模板

<div class="headerBox">
    <div class="topBox">
        <div class="topLogo f-left">
            <a href="#"><img th:src="@{/images/logo.png}"/></a>
        </div>
        <div class="new-nav">
            <h3>电影频道</h3>
        </div>
    </div>
</div>
<div class="locationLine" layout:fragment=" prompt ">
    当前位置:首页 &gt; <em>页面</em>
</div>
<table class="globalMainBox" style="position:relative;z-index:1">
    <tr>
        <td class="columnLeftBox" valign="top">
            <div th:replace="fragments/nav :: nav"></div>
        </td>
        <td class="whiteSpace"></td>
        <td class="rightColumnBox" valign="top">
            <div layout:fragment="content"></div>
        </td>
    </tr>
</table>

<div class="footBox" th:replace="fragments/footer :: footer"></div>

有了页面模板之后,就可以在一个主页面视图上引用上面的layout,并替换它的提示栏prompt和主要内容显示区域content,其他页眉、页脚和导航栏却保持同样的内容,如代码清单3-14所示。这样就可以设计出一个使用共用模板的具有统一风格特征的界面。
代码清单3-14 使用layout模板的视图设计

xmlns:th="http://www.thymeleaf.org" layout:decorator="fragments/layout">

当前位置:首页 > 电影管理

时间: 2024-10-27 00:50:10

《深入实践Spring Boot》一3.3 使用Thymeleaf模板的相关文章

《深入实践Spring Boot》一2.4 使用Neo4j

本节书摘来自华章出版社<深入实践Spring Boot>一书中的第2章,第2.14节,作者陈韶健,更多章节内容可以访问"华章计算机"公众号查看. 2.4 使用Neo4j 有没有既具有传统关系型数据库的优点,又具备NoSQL数据库优势的一种数据库呢?Neo4j就是一种这样的数据库.Neo4j是一个高性能的NoSQL图数据库,并且具备完全事务特性.Neo4j将结构化数据存储在一张图上,图中每一个节点的属性表示数据的内容,每一条有向边表示数据的关系.Neo4j没有表结构的概念,它

《深入实践Spring Boot》一第3章 Spring Boot界面设计3.1 模型设计

本节书摘来自华章出版社<深入实践Spring Boot>一书中的第3章,第3.1节,作者陈韶健,更多章节内容可以访问"华章计算机"公众号查看. 第3章 Spring Boot界面设计 用Spring Boot框架设计Web显示界面,我们还是使用MVC(Model View Controller,模型-视图-控制器)的概念,将数据管理.事件控制和界面显示进行分层处理,实现多层结构设计.界面设计,即视图的设计,主要是组织和处理显示的内容,界面上的事件响应最终交给了控制器进行处理

《深入实践Spring Boot》一2.3 使用MongoDB

本节书摘来自华章出版社<深入实践Spring Boot>一书中的第2章,第2.3节,作者陈韶健,更多章节内容可以访问"华章计算机"公众号查看. 2.3 使用MongoDB 在当前流行的NoSQL数据库中,MongoDB是大家接触比较早而且用得比较多的数据库.MongoDB是文档型的NoSQL数据库,具有大数据量.高并发等优势,但缺点是不能建立实体关系,而且也没有事务管理机制. 2.3.1 MongoDB依赖配置 在Spring Boot中使用MongoDB也像使用JPA一样

《深入实践Spring Boot》一3.2 控制器设计

本节书摘来自华章出版社<深入实践Spring Boot>一书中的第3章,第3.2节,作者陈韶健,更多章节内容可以访问"华章计算机"公众号查看. 3.2 控制器设计 怎样将视图上的操作与模型--数据管理模块联系起来,这中间始终是控制器在起着通信桥梁的作用,它响应视图上的操作事件,然后根据需要决定是否访问数据管理模块,最后再将结果返回给合适的视图,由视图处理显示.下面将按照电影控制器的设计来说明控制器中增删查改的实现方法,演员控制器的设计与此类似,不再赘述. 3.2.1 新建控

深入实践Spring Boot导读

Preface?前 言 Spring Boot作为Java编程语言的一个全新开发框架,在国内外才刚刚兴起,还未得到普及使用.相比于以往的一些开发框架,Spring Boot不但使用更加简单,而且功能更加丰富,性能更加稳定而健壮.使用Spring Boot开发框架,不仅能提高开发速度,增强生产效率,从某种意义上,可以说是解放了程序员的劳动,而且一种新技术的使用,更能增强系统的稳定性和扩展系统的性能指标.本书就是本着提高开发效率,增强系统性能,促进新技术的普及使用这一目的而写的. Spring Bo

《深入实践Spring Boot》一第一部分 Part 1基础应用开发

第一部分 Part 1 基础应用开发 第1章 Spring Boot入门 第2章 在Spring Boot中使用数据库 第3章 Spring Boot界面设计 第4章 提高数据库访问性能 第5章 Spring Boot安全设计 这一部分从搭建开发环境,简单入门,到使用数据库.界面设计.安全管理等一系列内容,介绍了使用Spring Boot框架进行基础应用开发的方法. 第1章介绍了开发环境的搭建和开发工具的选择和安装,并以一个非常简单的实例,演示了如何使用Spring Boot框架创建工程和发布应

《深入实践Spring Boot》一导读

Preface前 言 Spring Boot作为Java编程语言的一个全新开发框架,在国内外才刚刚兴起,还未得到普及使用.相比于以往的一些开发框架,Spring Boot不但使用更加简单,而且功能更加丰富,性能更加稳定而健壮.使用Spring Boot开发框架,不仅能提高开发速度,增强生产效率,从某种意义上,可以说是解放了程序员的劳动,而且一种新技术的使用,更能增强系统的稳定性和扩展系统的性能指标.本书就是本着提高开发效率,增强系统性能,促进新技术的普及使用这一目的而写的. Spring Boo

《深入实践Spring Boot》一第1章Spring Boot入门1.1 配置开发环境

第1章 Spring Boot入门 在使用Spring Boot框架进行各种开发体验之前,要先配置好开发环境.首先安装JDK,然后选择一个开发工具,如Eclipse IDE和IntelliJ IDEA(以下简称IDEA)都是不错的选择.对于开发工具的选择,本书极力推荐使用IDEA,因为它为Spring Boot提供了许多更好和更贴切的支持,本书的实例都是使用IDEA创建的.同时,还需要安装Apache Maven和Git客户端.所有这些都准备好之后,我们就能开始使用Spring Boot了. 1

《深入实践Spring Boot》一第2章 在Spring Boot中使用数据库2.1 使用MySQL

第2章 在Spring Boot中使用数据库 使用数据库是开发基本应用的基础.借助于开发框架,我们已经不用编写原始的访问数据库的代码,也不用调用JDBC(Java Data Base Connectivity)或者连接池等诸如此类的被称作底层的代码,我们将在高级的层次上访问数据库.而Spring Boot更是突破了以前所有开发框架访问数据库的方法,在前所未有的更加高级的层次上访问数据库.因为Spring Boot包含一个功能强大的资源库,为使用Spring Boot的开发者提供了更加简便的接口进

深入实践Spring Boot》一2.5 小结

2.5 小结 这一章,我们一口气学习使用了4种数据库:MySQL.Redis.MongoDB.Neo4j,除了Redis以外,都使用了由Spring Boot提供的资源库来访问数据库并对数据库执行了一般的存取操作.可以看出,在Spring Boot框架中使用数据库非常简单.容易,这主要得益于Spring Boot资源库的强大功能,Spring Boot资源库整合了第三方资源,它把复杂的操作变成简单的调用,它把所有"辛苦.繁重的事情"都包揽了,然后将"微笑和鲜花"献给