gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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加入依赖即可:

 
?
1
 
2
3
4
5
<dependency>
   <groupId>org.springframework.boot</groupId>
 
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

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

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
########################################################
###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 。

 
?
1
 
2
3
4
5
6
7
8
9
10
11
<!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)

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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 会输出:

 
?
1
 
Hello.v.2

from TemplateController.helloHtml 。

使用freemarker 。

使用freemarker也很简单, 。

在pom.xml加入freemarker的依赖:

 
?
1
 
2
3
4
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

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

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
########################################################
###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:

 
?
1
 
2
3
4
5
6
7
8
9
/**
  * 返回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 。

 
?
1
 
Hello.v.2

from TemplateController.helloFtl 。

thymeleaf和freemarker是可以共存的.

------------------------------------------------------------------------------------------------------------------------------------------------ 。

本文记录一下几点:

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

2、Maven配置 。

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

4、thymeleaf常用基础知识点 。

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

Maven的资源文件目录:/src/Java/resources 。

spring-boot项目静态文件目录:/src/java/resources/static 。

spring-boot项目模板文件目录:/src/java/resources/templates 。

spring-boot静态首页的支持,即index.html放在以下目录结构会直接映射到应用的根目录下:

 
?
1
 
2
3
4
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下映射一下就可以了.

 
?
1
 
2
3
4
@RequestMapping ( "/" )
  public String index(){
  return "index" ;
  }

在spring-boot下,默认约定了Controller试图跳转中thymeleaf模板文件的的前缀prefix是”classpath:/templates/”,后缀suffix是”.html” 。

这个在application.properties配置文件中是可以修改的.

如下配置可以修改试图跳转的前缀和后缀 。

 
?
1
 
2
spring.thymeleaf.prefix: /templates/
spring.thymeleaf.suffix: .html

更过有关thymeleaf中的默认这是可以查看org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties这个类的属性 。

2、Maven配置 。

在pom.xml中加入如下依赖 。

 
?
1
 
2
3
4
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

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

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

Spring-boot使用thymeleaf时默认是有缓存的,即你把一个页面代码改了不会刷新页面的效果,你必须重新运行spring-boot的main()方法才能看到页面更改的效果。我们可以把thymeleaf的缓存关掉,用于支持页面修改后重新发布到spring-boot内嵌的tomcat中去。在application.properties配置文件中加入以下配置.

 
?
1
 
2
3
4
# Allow Thymeleaf templates to be reloaded at dev time
spring.thymeleaf.cache: false
server.tomcat.access_log_enabled: true
server.tomcat.basedir: target/tomcat

4、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元素 。

 
?
1
 
2
3
< 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、时间的格式化, 。

 
?
1
 
${#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" 。

总结 。

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

原文链接:http://blog.csdn.net/u014695188/article/details/52347318 。

最后此篇关于spring boot使用thymeleaf模板的方法详解的文章就讲到这里了,如果你想了解更多关于spring boot使用thymeleaf模板的方法详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com