1.创建模板解析器 Create Template Resolver  用来加载模板

 // create template resolver
//创建模板解析器可以用Servlet上下文模板解析器ServletContextTemplateResolver或者类加载模板解析器ClassLoaderTemplateResolver ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();

创建模板解析器将指定我们从Servlet上下文检索模板文件作为资源,并考虑应用程序的根路径作为资源的路径。如下:

 // XHTML is the default mode, but we will set it anyway for better understanding of code
templateResolver.setTemplateMode('XHTML'); // This will convert "home" to "/WEB-INF/templates/home.html"
templateResolver.setPrefix('/WEB-INF/templates/');
templateResolver.setSuffix('.html');

如上所示,通过解析器创建模板节点,当使用Thymeleaf渲染名为“home”的模板的的时候,将,解析器将会自动加上前缀和后缀(扩展名)。

2.创建模板引擎 Create Template Engine

 //Create Template Engine
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver); //设置模板解析器

创建模板引擎很简单,只需要一个模板解析器实例。创建了关键的模板解析器和模板引擎之后,我们就可以创建模板页面使用Thymeleaf。

3.创建模板文件

模板文件放在'/WEB-INF/templates/'路径下。要指定DOCTYPE和命名空间。

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello thymeleaf</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p>
<span th:text="#{home.welcome}">this is text will not be show</span>
</p>
</body>
</html>

模板文件中的th:text”属性的值是一个变量表达式,它将获取变量“hellword”的值作为<span>标签的文本显示到页面上。

4.创建模板上下文

为了输出变量“helloworld”的值,我们需要创建模板上下文,将变量输出到模板文件中。

//create servlet context
WebContext ctx = new WebContext(req,resp,this.getServletContext(),req.getLocale());
ctx.setVariable('helloword','hello thymeleaf,wellcome!')

5.执行模板引擎

执行模板引擎需要传入模板名、上下文对象以及响应流。如下:

 //Executing template engine
templateEngine.process('home',ctx,resp.getWriter());

让我们看看执行模板引擎后的结果:

OK,如上所说,模板文件被替换成了标准的XHTML文件了。

最后的源码

public class thymeleafServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//Create Template Resolver
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
//ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
// XHTML is the default mode, but we will set it anyway for better understanding of code
templateResolver.setTemplateMode("XHTML");
// This will convert "home" to "/WEB-INF/templates/home.html"
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
// Set template cache TTL to 1 hour. If not set, entries would live in cache until expelled by LRU
templateResolver.setCacheTTLMs(Long.valueOf(3600000L));
// Cache is set to true by default. Set to false if you want templates to
// be automatically updated when modified.
templateResolver.setCacheable(true);
//Create Template Engine
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
//Write the response headers
resp.setContentType("text/html;charset=UTF-8");
resp.setHeader("Pragma", "no-cache");
resp.setHeader("Cache-Control", "no-cache");
resp.setDateHeader("Expires", 0);
//Create Servlet context
WebContext ctx = new WebContext(req, resp, this.getServletContext(), req.getLocale());
ctx.setVariable("helloword","hello thymeleaf,wellcome!"); //Executing template engine
templateEngine.process("home", ctx, resp.getWriter());
}
}

原文地址:http://www.mamicode.com/info-detail-1150559.html

thymeleaf 模板引擎的更多相关文章

  1. (二)SpringBoot基础篇- 静态资源的访问及Thymeleaf模板引擎的使用

    一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf ...

  2. 【Springboot】Springboot整合Thymeleaf模板引擎

    Thymeleaf Thymeleaf是跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它主要有以下几个特点: 1. Thymeleaf在有网络和无 ...

  3. 三、thymeleaf模板引擎构建前台html, 后台使用 ModelAndView 和 Model 模型

    项目源码:https://github.com/y369q369/springBoot.git      ->     thymeleaf 私聊QQ: 1486866853 1.pom.xml中 ...

  4. SpringBoot使用thymeleaf模板引擎

    (1).添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  5. Spring Boot 2.0 整合Thymeleaf 模板引擎

    本节将和大家一起实战Spring Boot 2.0 和thymeleaf 模板引擎 1. 创建项目 2. 使用Spring Initlizr 快速创建Spring Boot 应用程序 3. 填写项目配 ...

  6. Thymeleaf模板引擎的初步使用

    在springboot中,推荐使用的模板引擎是Thymeleaf模板引擎,它提供了完美的Spring MVC的支持.下面就简单的介绍一下Thymeleaf模板引擎的使用. 在controller层中, ...

  7. spring boot: thymeleaf模板引擎使用

    spring boot: thymeleaf模板引擎使用 在pom.xml加入thymeleaf模板依赖 <!-- 添加thymeleaf的依赖 --> <dependency> ...

  8. SpringBoot入门篇--使用Thymeleaf模板引擎进行页面的渲染

    在做WEB开发的时候,我们不可避免的就是在前端页面之间进行跳转,中间进行数据的查询等等操作.我们在使用SpringBoot之前包括我在内其实大部分都是用的是JSP页面,可以说使用的已经很熟悉.但是我们 ...

  9. (二)SpringBoot2.0基础篇- 静态资源的访问及Thymeleaf模板引擎的使用

    一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf ...

  10. thymeleaf模板引擎

    thymeleaf模板引擎 thymeleaf是现代化服务器端的Java模板引擎,不同于JSP和FreeMarker,Thymeleaf的语法更加接近HTML,并且也有不错的扩展性.详细资料可以浏览官 ...

随机推荐

  1. XCode中调整字体大小

    转自:http://www.cnblogs.com/mengshu-lbq/archive/2012/12/24/2830859.html 1)调出Xcode的preference应该是 Comman ...

  2. cocos2dx libjson

    libjson下载 http://sourceforge.net/projects/libjson/ 下载解压后改名成libjson,用到的是根目录下面的JSONOptions.h.libjson.h ...

  3. PHP做好防盗链的基本思想 防盗链的设置方法

    盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率.受益者不提供资源或提供 ...

  4. Helpers\Hooks

    Helpers\Hooks Add modules with hooks The hooks helper allows modules to be created within the module ...

  5. const int * pi/int * const pi的区别

    前面有一篇文章:数组名就是常量指针 参考文章:http://blog.pfan.cn/whyhappy/5164.html const int * pi .int const * pi与int *   ...

  6. Sqlite和CoreData的区别

    使用方便性.实际上,一个成熟的工程中一定是对数据持久化进行了封装的,因此底层使用的到底是core data还是sqlite,不应该被业务逻辑开发者关心.因此,即使习惯写SQL查询的人,也应该避免在业务 ...

  7. php 发送邮件

    php我们可以使用系统的mail函数去发送邮件 但是需要配置一下邮件环境 这里选择使用PHPMailer  这样比较方便 首先下载PHPMailer:https://github.com/Synchr ...

  8. JS中获取table节点的tr或td的内容

    <table id="tb1" width="200" border="1" cellpadding="4" ce ...

  9. mac端口占用查找进程并杀死

    查找端口port被占用的进程 lsof -i tcp:port 杀死进程pid kill -9 pid

  10. 关于docker中的几个小命令

    问题 A VirtualBox machine with the name 'vagrant_c__devops_docker_vagrant' already exists. 解决命令:VBoxMa ...