`

深入学习spring-boot系列(三)--使用thymeleaf模板

 
阅读更多
本文以上一篇文章“深入学习spring-boot系列(二)--使用spring-data-jpa
”为原型,将里面的所有JSP页面更改成thymeleaf模板。

本文记录一下几点:
一、资源文件的约定目录结构
二、Maven配置
三、开发时修改thymeleaf模板自动重新加载配置
四、thymeleaf常用基础知识点

一、资源文件的约定目录结构
在“深入学习spring-boot系列(二)--使用spring-data-jpa“一文中,只介绍了spring-boot项目源码目录结构的约定,现在继续介绍资源文件的约定目录结构
Maven的资源文件目录:/src/java/resources
spring-boot项目静态文件目录:/src/java/resources/static
spring-boot项目模板文件目录:/src/java/resources/templates
spring-boot静态首页的支持,即index.html放在以下目录结构会直接映射到应用的根目录下:
classpath:/META-INF/resources/index.html
classpath:/resources/index.html
classpath:/static/index.html
calsspath:/public/index.html

而上一篇文章“深入学习spring-boot系列(二)--使用spring-data-jpa“中使用的标准maven目录/src/java/webapp目录没有了,将之前的jsp页面全部使用thymeleaf模板重新实现,并将它们放置在/src/java/resources/templates目录下。
而由于使用thymeleaf的html5模板,所以我将index.html模板文件直接放到了/src/java/resources/templates目录下。然而这个目录并不是首页文件的默认目录,所以我们需要手动将应用根路径映射到/src/java/resources/templates/index.html下。这个在spring-mvc的Controller下映射一下就可以了。
@RequestMapping("/")
	public String index(){
		return "index";
	}

在spring-boot下,默认约定了Controller试图跳转中thymeleaf模板文件的的前缀prefix是”classpath:/templates/”,后缀suffix是”.html”
这个在application.properties配置文件中是可以修改的。
如下配置可以修改试图跳转的前缀和后缀
spring.thymeleaf.prefix: /templates/
spring.thymeleaf.suffix: .html

更过有关thymeleaf中的默认这是可以查看org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties这个类的属性
看看当前的目录结构如下:



二、Maven配置
在pom.xml中加入如下依赖
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

原来关于spring-boot-starter-web等的依赖就可以去掉了,因为spring-boot-starter-thymeleaf是包含这些依赖的。而关于jsp的依赖也可以去掉了,因为我们已经完全抛弃jsp了。

三、开发时修改thymeleaf模板自动重新加载配置
Spring-boot使用thymeleaf时默认是有缓存的,即你把一个页面代码改了不会刷新页面的效果,你必须重新运行spring-boot的main()方法才能看到页面更改的效果。我们可以把thymeleaf的缓存关掉,用于支持页面修改后重新发布到spring-boot内嵌的tomcat中去。在application.properties配置文件中加入以下配置。
# Allow Thymeleaf templates to be reloaded at dev time
spring.thymeleaf.cache: false
server.tomcat.access_log_enabled: true
server.tomcat.basedir: target/tomcat


四、thymeleaf常用基础知识点

1、在html页面中引入thymeleaf命名空间,即<html xmlns:th=http://www.thymeleaf.org></html>,此时在html模板文件中动态的属性使用th:命名空间修饰

2、引用静态资源文件,比如CSS和JS文件,语法格式为“@{}”,如@{/js/blog/blog.js}会引入/static目录下的/js/blog/blog.js文件

3、访问spring-mvc中model的属性,语法格式为“${}”,如${user.id}可以获取model里的user对象的id属性

4、循环,在html的标签中,加入th:each=“value:${list}”形式的属性,如<span th:each=”user:${users}”></span>可以迭代users的数据

5、判断,在html标签中,加入th:if=”表达式”可以根据条件显示html元素
<span th:if="${not #lists.isEmpty(blog.publishTime)}">
<span id="publishtime" th:text="${#dates.format(blog.publishTime, 'yyyy-MM-dd HH:mm:ss')}"></span>
</span>
以上代码表示若blog.publishTime时间不为空,则显示时间

6、时间的格式化,
${#dates.format(blog.publishTime,'yyyy-MM-dd HH:mm:ss')}
表示将时间格式化为”yyyy-MM-dd HH:mm:ss”格式化写法与Java格式化Date的写法是一致的。

7、字符串拼接,有两种形式
比如拼接这样一个URL:/blog/delete/{blogId}
第一种:th:href="'/blog/delete/' + ${blog.id }"
第二种:th:href="${'/blog/delete/' + blog.id }"

更详细的代码请参考我的Github项目Jisonami的0.1.2:
https://github.com/jisonami/Jisonami2/tree/0.1.2
  • 大小: 18.1 KB
1
0
分享到:
评论
1 楼 smilease 2016-12-03  
写的很好,解决了我遇到的问题,非常感谢。

相关推荐

    spring-boot-samples-master

    "spring-boot-samples-master"这个项目,正是一个集大成的Spring Boot示例仓库,它包含了各种Spring Boot应用场景的实例代码,帮助开发者深入理解和学习Spring Boot的核心特性和最佳实践。 在深入探讨之前,我们先...

    spring-boot-thymeleaf DEMO

    在 "spring-boot-thymeleaf DEMO" 中,我们将看到如何将 Spring Boot 和 Thymeleaf 整合到一起,构建一个动态网页应用。首先,你需要在项目中添加 Thymeleaf 的依赖,这通常在 `pom.xml` 或 `build.gradle` 文件中...

    spring-boot-mybatis-cache-thymeleaf学习练习demo源码

    在本项目"spring-boot-mybatis-cache-thymeleaf学习练习demo源码"中,我们可以深入学习和实践如何将Spring Boot、MyBatis、Cache(通常指的是Spring Cache)以及Thymeleaf这四个关键组件整合在一起,创建一个高效、...

    spring-boot-reference-zh

    学习 "spring-boot-reference-zh",将有助于深入理解 Spring Boot 的工作原理,提升开发效率,同时避免常见问题。通过这份文档,你可以了解每个功能的详细配置、使用方法以及最佳实践,从而更好地利用 Spring Boot ...

    整合mybatis-spring-boot-2.0-shiro-thymeleaf

    在本项目"整合mybatis-spring-boot-2.0-shiro-thymeleaf"中,开发者提供了一个简短但全面的教程,...同时,这也有助于提升对Spring Boot自动化配置、MyBatis数据库操作、Shiro安全管理和Thymeleaf模板引擎的深入理解。

    spring-boot-demo

    2. **Web服务**:如果项目包含`spring-boot-starter-web`,那么可以创建RESTful API或者Thymeleaf模板驱动的Web页面。`@RestController`注解用于标记控制器类,而`@GetMapping`和`@PostMapping`等用于定义HTTP请求...

    spring-boot-tutorials-master.zip

    - **视图解析**:虽然Spring Boot更推荐使用Thymeleaf、Freemarker等模板引擎,但也可以支持JSP。 - **配置JSP**:由于Spring Boot默认不启用JSP支持,需要额外配置,包括添加Jasper编译器和设置视图解析器。 这...

    spring-boot 1.2.4.release

    - `spring-boot-sample-web`:基础的Web应用示例,可能包含Thymeleaf、FreeMarker或Groovy模板引擎的使用。 - `spring-boot-sample-actuator`:Actuator的使用示例,展示如何监控和管理应用。 - `spring-boot-sample...

    spring-boot 各种集成各种demo例子

    在"spring-boot 各种集成各种demo例子"中,我们可以深入学习 Spring Boot 如何与其他技术进行整合,并通过实际的项目示例来提升我们的开发技能。 1. **自动配置**:Spring Boot 的核心特性之一是自动配置,它基于 `...

    spring-boot-examples.zip

    在 spring-boot-web 示例中,你可以学习到如何定义控制器,处理 HTTP 请求,以及使用模板引擎(如 Thymeleaf 或 Freemarker)来生成动态 HTML。 4. **Spring Boot RabbitMQ**: RabbitMQ 是一个流行的开源消息代理和...

    spring-boot-中文PDF版

    《Spring Boot中文参考指南》是一本全面且深入的教程,无论你是初学者还是经验丰富的开发者,都能从中获取到宝贵的实战经验和深入理解。通过学习,你将能够熟练地运用Spring Boot来构建高效、可维护的现代Java应用。

    spring-boot-examples-master.zip

    "spring-boot-examples-master.zip"这个压缩包包含了多个Spring Boot的应用示例,旨在帮助开发者深入理解并熟练掌握Spring Boot的核心特性和使用技巧。 首先,我们来看看标签"spring-boot-exam"所关联的知识点。...

    spring-boot.zip

    Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。...对于希望深入学习 Spring Boot 的开发者来说,通过这个项目可以逐步掌握 Java 企业级开发的新范式。

    spring-boot (spring-boot实战随书源码—汪云飞)

    11. **Thymeleaf模板引擎**:Spring Boot默认推荐的模板引擎,支持动态HTML生成,便于前后端分离。 12. **Security**:Spring Boot Security提供了安全控制的基础框架,包括认证、授权等功能,可以快速实现应用的...

    spring-boot-master-源码.zip

    总的来说,"spring-boot-master-源码.zip"提供了一个了解和学习Spring Boot框架的绝佳机会。你可以从中探索Spring Boot的自动配置机制,理解starter的工作方式,学习如何创建自定义starter,深入研究Spring Data与...

    spring-boot-reference-guide-zh-中文, spring-boot参考指南

    - **Spring MVC**:Spring Boot默认使用Spring MVC处理HTTP请求,提供模板引擎(如Thymeleaf、Freemarker)支持。 - **RESTful服务**:创建JSON或XML响应,支持HATEOAS概念。 - **静态资源**:自动处理CSS、...

    spring-boot 各种demo例子(最新)

    4. **Thymeleaf/FreeMarker**:Spring Boot 可以与 Thymeleaf 或 FreeMarker 等模板引擎集成,用于生成动态 HTML 页面。在 demo 中,这些模板引擎的配置和使用方法会有展示。 5. **数据访问**:Spring Boot 支持...

    spring-boot中文开发指南

    5. **Web开发**:学习使用Spring Boot和Spring MVC进行Web应用开发,包括RESTful API设计、模板引擎(Thymeleaf、Freemarker)和WebSocket支持。 6. **数据访问**:掌握如何与各种数据库(如MySQL、PostgreSQL、...

    spring-boot-demo.zip

    例如,如果项目需要使用Thymeleaf作为模板引擎,只需添加spring-boot-starter-thymeleaf的依赖即可。同时,Spring Boot还支持Actuator,用于提供健康检查、指标监控等功能,有助于微服务环境下的应用管理和维护。 ...

Global site tag (gtag.js) - Google Analytics