全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

spring boot使用thymeleaf模板的方法详解

前言

Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。相较与其他的模板引擎,它有如下三个极吸引人的特点:

      1.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。

      2.Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。

      3.Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。

下面这篇文章将给

整体步骤:

(1)  在pom.xml中引入thymeleaf;

(2)  如何关闭thymeleaf缓存

(3)  编写模板文件.html

spring Boot默认就是使用thymeleaf模板引擎的,所以只需要在pom.xml加入依赖即可:

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

Thymeleaf缓存在开发过程中,肯定是不行的,那么就要在开发的时候把缓存关闭,只需要在application.properties进行配置即可:

######################################################## 
###THYMELEAF (ThymeleafAutoConfiguration) 
######################################################## 
#spring.thymeleaf.prefix=classpath:/templates/ 
#spring.thymeleaf.suffix=.html 
#spring.thymeleaf.mode=HTML5 
#spring.thymeleaf.encoding=UTF-8 
# ;charset=<encoding> is added 
#spring.thymeleaf.content-type=text/html 
# set to false for hot refresh 
 
spring.thymeleaf.cache=false 

编写模板文件src/main/resouces/templates/helloHtml.html

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" 
 xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> 
 <head> 
 <title>Hello World!</title> 
 </head> 
 <body> 
 <h1 th:inline="text">Hello.v.2</h1> 
 <p th:text="${hello}"></p> 
 </body> 
</html> 

编写访问路径(com.kfit.test.web.TemplateController):

package com.kfit.test.web; 
 
import java.util.Map; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
 
 
 
/** 
 
 * 模板测试. 
 
 * @author Administrator 
 
 * 
 
 */ 
 
@Controller 
 
publicclass TemplateController { 
 /** 
 
 * 返回html模板. 
 
 */ 
 
 @RequestMapping("/helloHtml") 
 public String helloHtml(Map<String,Object> map){ 
 
 map.put("hello","from TemplateController.helloHtml"); 
 return"/helloHtml"; 
 } 
} 

启动应用,输入地址:http://127.0.0.1:8080/helloHtml 会输出:

Hello.v.2

from TemplateController.helloHtml

使用freemarker

使用freemarker也很简单,

在pom.xml加入freemarker的依赖:

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

剩下的编码部分都是一样的,说下application.properties文件:

######################################################## 
###FREEMARKER (FreeMarkerAutoConfiguration) 
######################################################## 
spring.freemarker.allow-request-override=false 
spring.freemarker.cache=true 
spring.freemarker.check-template-location=true 
spring.freemarker.charset=UTF-8 
spring.freemarker.content-type=text/html 
spring.freemarker.expose-request-attributes=false 
spring.freemarker.expose-session-attributes=false 
spring.freemarker.expose-spring-macro-helpers=false 
#spring.freemarker.prefix= 
#spring.freemarker.request-context-attribute= 
#spring.freemarker.settings.*= 
#spring.freemarker.suffix=.ftl 
#spring.freemarker.template-loader-path=classpath:/templates/#comma-separatedlist 
#spring.freemarker.view-names= #whitelistofviewnamesthatcanberesolved 

com.kfit.test.web.TemplateController:

/** 
 * 返回html模板. 
 */ 
 
 @RequestMapping("/helloFtl") 
 public String helloFtl(Map<String,Object> map){ 
 map.put("hello","from TemplateController.helloFtl"); 
 return"/helloFtl"; 
 } 

访问地址:http://127.0.0.1:8080/helloFtl

Hello.v.2

from TemplateController.helloFtl

thymeleaf和freemarker是可以共存的。

------------------------------------------------------------------------------------------------------------------------------------------------

本文记录一下几点:

一、资源文件的约定目录结构

二、Maven配置

三、开发时修改thymeleaf模板自动重新加载配置

四、thymeleaf常用基础知识点

一、资源文件的约定目录结构

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 

由于使用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 }" rel="external nofollow"

第二种:th:href="${'/blog/delete/' + blog.id }" rel="external nofollow"

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# springboot  # thymeleaf  # springboot使用模板  # spring  # boot  # 模板  # Springboot使用thymeleaf动态模板实现刷新  # Spring Boot集成Thymeleaf模板引擎的完整步骤  # springboot如何使用thymeleaf模板访问html页面  # Spring boot搭建web应用集成thymeleaf模板实现登陆  # 详解SpringBoot+Thymeleaf 基于HTML5的现代模板引擎  # springboot用thymeleaf模板的paginate分页完整代码  # springboot中thymeleaf模板使用详解  # Springboot Thymeleaf模板文件调用Java类静态方法  # Spring Boot thymeleaf模板引擎的使用详解  # 要在  # 这是  # 只需  # 掉了  # 它可以  # 跳转  # 这篇文章  # 首页  # 配置文件  # 就可以  # 格式为  # 是一个  # 加载  # 放在  # 目录下  # 是有  # 两种  # 我们可以  # 也很  # 这样一个 


相关文章: 宁波自助建站系统如何快速打造专业企业网站?  济南企业网站制作公司,济南社保单位网上缴费步骤?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何快速打造个性化非模板自助建站?  如何在阿里云虚拟主机上快速搭建个人网站?  宿州网站制作公司兴策,安徽省低保查询网站?  金*站制作公司有哪些,金华教育集团官网?  北京的网站制作公司有哪些,哪个视频网站最好?  建站主机功能解析:服务器选择与快速搭建指南  如何通过西部数码建站助手快速创建专业网站?  浅谈Javascript中的Label语句  Python如何创建带属性的XML节点  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  攀枝花网站建设,攀枝花营业执照网上怎么年审?  外贸公司网站制作哪家好,maersk船公司官网?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  无锡营销型网站制作公司,无锡网选车牌流程?  建站ABC备案流程中有哪些关键注意事项?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  javascript基本数据类型及类型检测常用方法小结  如何选择高效便捷的WAP商城建站系统?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  如何在Tomcat中配置并部署网站项目?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  微信推文制作网站有哪些,怎么做微信推文,急?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  html制作网站的步骤有哪些,iapp如何添加网页?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  临沂网站制作企业,临沂第三中学官方网站?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  深圳网站制作培训,深圳哪些招聘网站比较好?  如何使用Golang安装API文档生成工具_快速生成接口文档  建站之星会员如何解锁更多建站功能?  ,交易猫的商品怎么发布到网站上去?  建站之星安装提示数据库无法连接如何解决?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星多图banner生成与模板自定义指南  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  建站之星伪静态规则如何设置?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  电商平台网站制作流程,电商网站如何制作?  Android自定义listview布局实现上拉加载下拉刷新功能  ,想在网上投简历,哪几个网站比较好?  建站之星在线版空间:自助建站+智能模板一键生成方案  建站主机助手选型指南:2025年热门推荐与高效部署技巧  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。