freemarker从入门到精通

简介: freemarker从入门到精通

一:概述

web应用如果使用和jsp作为数据展示的模板,当此应用运行之后,会将对应的jsp页面翻译为对应的java文件,也就是servlet。相对于html而言,html这种静态页面不用翻译直接访问速度就很快。如何解决jsp编译为java文件然后再响应的问题?

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。目前企业中:主要用Freemarker做静态页面或是页面展示,

原理:

二:Freemarker的Helloworld

新建一个web工程,完整的工程目录结构如下

使用freemarker需要引入jar包

 

<dependency>
 
  <groupId>org.freemarker</groupId>
 
  <artifactId>freemarker</artifactId>
 
  <version>2.3.23</version>
 
</dependency>

首先要创建ftl模板文件

在webapp目录下新建ftls文件夹(名称以及存放的位置任意)存放Freemarker的模板

创建hello.ftl模板文件,(freemarker对于拓展名是没有要求的。通常使用ftl作为扩展名)输入如下内容下面要替换的内容

<html>
 
<head>
 
   <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
 
</head>
 
<body>
 
测试:${hello}
 
</body>
 
</html>

其中的${hello}是Freemarker的语法标签。Freemarker会将这个标签替换为程序中指定的内容。

测试方法

@Test
  public void testDemo() throws Exception {
    // 第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。
    Configuration configuration = new Configuration(Configuration.getVersion());
    // 第二步:设置模板文件所在的路径。
    configuration.setDirectoryForTemplateLoading(new File("D:/workspaces/freemarker-test/src/main/webapp/WEB-INF/ftl"));
    // 第三步:设置模板文件使用的字符集。一般就是utf-8.
    configuration.setDefaultEncoding("utf-8");
    // 第四步:加载一个模板,创建一个模板对象。
    Template template = configuration.getTemplate("hello.ftl");
    // 第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。
    Map dataModel = new HashMap<>();
    //向数据集中添加数据
    dataModel.put("hello", "this is my first freemarker test.");
    // 第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名。
    Writer out = new FileWriter(new File("D:/temp/term197/out/hello.html"));
    // 第七步:调用模板对象的process方法输出文件。
    template.process(dataModel, out);
    // 第八步:关闭流。
    out.close();
  }

三:freemarker模板语法

1.访问map中的key

${key}

2.访问POJO中的属性

${stu.id}-

${stu.name}

其中stu是pojo对象对应的key:这个对象还是放在map中传递过去的

3.取集合中的数据

循环使用格式:

<#list 要循环的数据 as 循环后的数据>

</#list>

实例如下

取循环中的下标

<#list studentList as student>

      ${student_index}

</#list>

4.判断

<#if student_index % 2 == 0>
我是if
<#else>
我是else
</#if>

实例

5.日期

${date?date} 2016-9-13
 
${date?time} 17:53:55
 
${date?datetime} 2016-9-13 17:53:55
 
${date?string("yyyy/MM/dd")}

date是属性名

dataModel.put("date",new Date());

6.Null值的处理

如果模板中引用的key不存在,会报异常,用${key!}代表空字符串

处理: ${aaa!"默认值"}或者${aaa!}代表空字符串

7.include

一个ftl模板中可以引用另一个模板

<#include "模板名">

如:

<#include "hello.ftl">

四:Springboot整合freemarker

详见

公众号 java一号 更多java实战项目资料、技术干活。更重要的是小猿愿成为你编程路上的一个朋友!

文章首发地址: www.javayihao.top

首发公众号: java一号

 


相关文章
|
前端开发 Java 测试技术
SpringMVC:从入门到精通
SpringMVC:从入门到精通
81 0
|
6月前
|
缓存
FreeMarker实践总结
FreeMarker实践总结
60 1
|
6月前
|
JavaScript Java Maven
Thymeleaf实践总结
Thymeleaf实践总结
97 0
|
前端开发 Java Spring
Thymeleaf使用笔记
Thymeleaf使用笔记
46 0
|
存储 JavaScript 前端开发
Thymeleaf入门教程
Thymeleaf入门教程
158 0
|
XML Java 程序员
模板引擎:第一章:FreeMarker
模板引擎:第一章:FreeMarker
197 0
模板引擎:第一章:FreeMarker
|
Java 程序员 Apache
模板引擎——FreeMarker初体验
FreeMarker 是一款模板引擎:一种基于模板的、用来生成输出文本(任何来自于 HTML格式的文本用来自动生成源代码)的通用工具。
|
XML 缓存 前端开发
SpringBoot集成Thymeleaf从入门到精通(全)
目录SpringBoot集成Thymeleaf1. 关闭缓存2. 表达式3. 常用属性4. 遍历元素5. 条件判断6. 字面量7. 字符串拼接8. 数学运算 SpringBoot集成Thymeleaf Thymeleaf 是一个流行的模板引擎,该模板引擎采用 Java 语言开发 Thymeleaf 是另外的一种模板技术,它本身并不属于 Spring Boot,Spring Boot只是很好地集成这种模板技术,作为前端页面的数据展示 在创建模板的时候还需要多选择一个这个 之后默认会自动添加这些依赖 Sp
146 0
SpringBoot集成Thymeleaf从入门到精通(全)
|
XML 存储 JSON
SpringMVC从入门到精通(全)
前言 springmvc是基于spring的一个框架,是spring的一个部件,做web的一个框架 web底层是servlet,基于此加了一些功能 springmvc用
170 0
SpringMVC从入门到精通(全)
|
Web App开发 安全 Java
一篇很全面的freemarker教程
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:格式部分,不会输出 3,插值:即${...}或#{..
1903 0