- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有人可以解释一下 spring-boot-parent 和 spring-boot-starter-parent 之间的区别吗,正如我在下面附加的 GIT HUB 代码链接之一中看到的,他们为 spr
我有与 jersey 框架集成的 Spring Boot 应用程序。 现在,当我尝试运行该应用程序时,它只是停留在 Spring 启动徽标上,之后没有任何 react 。 我也尝试添加 -X ,但徽标
我指的是 Spring Boot 关于 的文档自动配置 和 执行器 模块: 自动配置: Spring Boot AutoConfiguration attempts to automatically
我正在尝试将 apache log4j 集成到我的 Spring boot 应用程序中。这是我的 build.gradle 文件: build.gradle buildscript { rep
使用 Spring Boot Maven 插件的以下命令在生产中启动 Spring Boot 应用程序是否是一个好主意或实践? mvn spring-boot:run 最佳答案 不,这是个坏主意。 您
据我所知,spring boot 和 spring session 为我们提供了一站式自动配置,但是当我的应用程序使用 session redis 和应用程序缓存 redis 时,不是同一个 redi
我希望使用Spring Boot创建一个新的Web应用程序。不幸的是,我的服务器在技术堆栈方面相当有限。它安装了Java 5。 谁能告诉我spring boot是否可以在Java 1.5上运行以及什么
我有3个实体 CarWash(设置Wash) Wash(car_wash_id FK到CarWash) WashComment(wash_id FK到Wash) 有什么办法可以写这个查询 @Qu
我一直在关注this文章。 我正在尝试在Spring-boot应用程序中优雅地处理gRPC错误,的主要目标是能够在gRPC客户端中获取错误状态。 在上面的文章之后,我坚持为异常添加拦截器。如何在Spr
我有一个要使用的自定义log4j布局插件。在IntelliJ中运行或与./gradlew bootRun一起运行时,插件可以正常工作。不使用./gradlew bootJar构建启动jar。 启用-D
我想在给定范围 (5001-5100) 的随机端口上启动 Spring Cloud 应用程序(Spring Boot 1.5.14,Spring Cloud Edgware.SR4)。我知道我们可以使
任何人都可以向我展示或指出不使用 spring boot gradle 插件的 spring boot gradle 项目。 我正在寻找类似不使用 gradle 插件的 spring boot sta
我当时尝试包含上述依赖项之一,但找不到任何区别: spring boot starter web:我可以看到 Flux 和 Mono 类并制作一个响应式(Reactive)休息 Controller
我们一直在为我们的应用程序使用 Springboot 1.X。 现在准备开始一些新的应用程序,想知道我们是应该使用 SpringBoot2.0 还是坚持使用 SpringBoot 1.X? 对一种方式
我希望记录应用程序正在加载 application-profile.propeties 或 application.yml。怎么做。在哪种方法中,我可以听取它并检测它是成功加载还是失败。 最佳答案 您
当我在 pom.xml 中添加简单的 spring-boot-starter-data-jpa 依赖项时,在 pom.xml 文件中出现错误。如果我删除该依赖项,则不会再有错误。我不确定为什么会发生这
我希望记录应用程序正在加载 application-profile.propeties 或 application.yml。怎么做。在哪种方法中,我可以听取它并检测它是成功加载还是失败。 最佳答案 您
我在网上看了很多关于 spring-boot-devtools 的文章和问题,但仍然无法弄清楚为什么它对我不起作用。每次运行我的应用程序时,我都会得到以下信息: 17:54:28.057 [main]
我正在尝试将现有的 Spring 应用程序移植到 Spring Boot。我不使用 spring-boot-starter-data-solr 启动器,但是我的类路径上有 apache solrj (
(这主要是一个历史问题。Pivotal 建议所有论坛讨论都在 StackOverflow 上进行,这就是我在这里问它的原因。) Spring Boot 项目用来证明将应用程序的类和依赖项从可执行 ja
我是一名优秀的程序员,十分优秀!