spring-boot--使用thymeleaf模板

转载 2016年08月28日 19:46:35

转:http://jisonami.iteye.com/blog/2301387,http://412887952-qq-com.iteye.com/blog/2292402

整体步骤:
(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

 

thymeleaffreemarker是可以共存的。

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

本文记录一下几点: 
一、资源文件的约定目录结构 
二、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 }" 
第二种:th:href="${'/blog/delete/' + blog.id }" 


相关文章推荐

spring-boot--使用thymeleaf模板

转载:http://blog.csdn.net/u014695188/article/details/52347318 整体步骤: (1)            在pom.xml中引...

Ideal+spring boot+thymeleaf 的热部署问题处理

最近写Java开始使用Idea作为开发环境,项目中使用spring boot+thymeleaf的框架组合,每次改完页面都必须重新运行项目(这速度我也是醉了),于是查看了配置文件的配置,如下: ...
  • amohan
  • amohan
  • 2016-07-25 20:53
  • 4969

springboot热启动与热部署

一、热启动: 每自修改后, 程序自动启动spring Application上下文。 Pom中直接添加依赖即可: [html] view plain ...

Thymeleaf 之 使用devtools热启动、热部署

本文章来自【知识林】在Springboot+Thymeleaf的开发过程中,默认情况下修改到任何代码都需要重新启动项目才能生效,相信有过开发经验的人都会知道这是一件非常痛苦且非常浪费时间的事情,多么希...
  • zsl129
  • zsl129
  • 2016-10-24 23:18
  • 2231

SpringBoot热部署

在SpringBoot中启用热部署是非常简单的一件事,因为SpringBoot为我们提供了一个非常方便的工具spring-boot-devtools,我们只需要把这个工具引入到工程里就OK了,下面我就...
  • zknxx
  • zknxx
  • 2016-12-02 00:40
  • 14217

spring Boot 集成 Thymeleaf模板引擎实例

今天学习了spring boot 集成Thymeleaf模板引擎。发现Thymeleaf功能确实很强大。记录于此,供自己以后使用。 Thymeleaf:Thymeleaf是一个java类库,他是一个x...

Spring Boot学习笔记-Thymeleaf模板引擎的配置

在开发过程中,使用模板引擎是很有必要的。我之前学习SSM框架,一直是使用freemarker作为模板引擎,现在学习了Spring Boot之后,知道Spring Boot推荐使用的模板引擎是thyme...

spring boot 热部署

一、热启动: 每自修改后, 程序自动启动Spring Application上下文。 Pom中直接添加依赖即可: org.springframewo...

《Blender权威指南》

书名:Blender权威指南(Blender之父Ton Roosendaal作序推荐,BlenderCN中文社区官方推荐教程)作者:罗聪翼 著ISBN: 978-7-111-34073-7定价:89元...

spring boot 使用FreeMarker模板

在spring boot中使用FreeMarker模板非常简单方便,只需要简单几步就行。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)