本文是一个很简单很基础的Freemarker模板解析测试类,复杂的也是在此基础上添加一些代码优化而来,懂得基础流程后就能融会贯通了

POM:

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

JAVA:

 import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map; import freemarker.template.Template;
import freemarker.template.TemplateException; /**
* Freemarker测试类
*
* @author yzl
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class FreemarkerTest {
public static void main(String[] args) throws IOException, TemplateException {
Reader reader = new FileReader(new File("E:/test.ftl"));
Template template = new Template("test", reader, null, "utf-8"); Map<Object, Object> data = new HashMap<Object, Object>();
data.put("userName", "hello world");
data.put("list", Arrays.asList("entity1","entity2"));
Writer writer = new PrintWriter(System.out); template.process(data, writer); writer.flush();
writer.close();
reader.close();
}
}

Ftl文件:

<p>姓名:${userName}</p>
<p>List:
<#list list as entity>
${entity}</br>
</#list>
</p>

输出结果:

<p>姓名:hello world</p>
<p>List:
entity1</br>
entity2</br>
</p>

解析Freemark字符串和ftl文件到字符串:

 package com.longge.util;

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.io.StringWriter;
import java.util.Map; import freemarker.template.Template;
import lombok.NonNull; /**
* @author roger yang
* @date 7/04/2019
*/
public class TemplateUtils {
/**
* parsing string
* @param toParseStr
* @param data
* @return
* @throws Exception
*/
public static String parsingString(@NonNull String toParseStr, @NonNull Map<String, Object> data) throws Exception {
try(StringWriter sw = new StringWriter();) {
Template template = new Template(toParseStr, toParseStr, null); template.process(data, sw);
sw.flush();
return sw.toString();
}
} /**
* parsing with ftl file
* @param file
* @param data
* @return
* @throws Exception
*/
public static String parsingFtlFile(@NonNull File file, @NonNull Map<String, Object> data) throws Exception {
try(Reader reader = new FileReader(file);
StringWriter sw = new StringWriter();) {
Template template = new Template(file.getName(), reader, null);
template.process(data, sw);
sw.flush();
return sw.toString();
}
} /**
* parsing with ftl file
* @param file
* @param data
* @return
* @throws Exception
*/
public static String parsingFtlFile(@NonNull String filePath, @NonNull Map<String, Object> data) throws Exception {
File file = new File(filePath);
return parsingFtlFile(file, data);
}
}

简单的freemarker解析测试的更多相关文章

  1. 非常简单的XML解析(SAX解析、pull解析)

    这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 package com.example.demo.service; import java.io.IOException; import ...

  2. 自己动手实现一个简单的JSON解析器

    1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着诸多优点.比如易读性更好,占用空间更少等.在 ...

  3. 一个简单的json解析器

    实现一个简单地json解析器. 两部分组成,词法分析.语法分析 词法分析 package com.mahuan.json; import java.util.LinkedList; import ja ...

  4. 基于 Roslyn 实现一个简单的条件解析引擎

    基于 Roslyn 实现一个简单的条件解析引擎 Intro 最近在做一个勋章的服务,我们想定义一些勋章的获取条件,满足条件之后就给用户颁发一个勋章,定义条件的时候会定义需要哪些参数,参数的类型,获取勋 ...

  5. 用c#自己实现一个简单的JSON解析器

    一.JSON格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着很多优点.例如易读性更好,占用空间更 ...

  6. 简单sql字段解析器实现参考

    用例:有一段sql语句,我们需要从中截取出所有字段部分,以便进行后续的类型推断,请给出此解析方法. 想来很简单吧,因为 sql 中的字段列表,使用方式有限,比如 a as b, a, a b... 1 ...

  7. 简单的URL解析

    简单的URL解析,直接举例说明了 function getUrl(){ //如果存在则取到来后面的参数,注意,?不需要取出,substring从1开始,否则取""; var qs ...

  8. FFmpeg的HEVC解码器源码简单分析:解析器(Parser)部分

    ===================================================== HEVC源码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpeg ...

  9. FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分

    ===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...

随机推荐

  1. "2016-10-06T12:09:18.303+0800"

    Java public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new Simpl ...

  2. Java小应用程序Applet,画布上新建按钮和文本

    <pre name="code" class="java">package com.hx; import java.applet.*; import ...

  3. 关于网络爬虫项目的项目建议(NABCD)

    Need 我们小组的研究课题是编写一个更快捷,更安全的爬虫软件,编写时会应用到学长的部分代码并在其基础上完善创新. 初步阅读了学长们的博客上面的几个版本的测试情况和源代码,发现学长们在实现基础功能的条 ...

  4. 知识总结提炼-AP模块

    http://www.cnblogs.com/bruce_zhao/p/3809686.html 应付模块业务操作流程 供应商管理 供应商概述 在您使用 Oracle Purchasing 之前,需要 ...

  5. 用c#开发微信(2)扫描二维码,用户授权后获取用户基本信息 (源码下载)

    本文将介绍基于Senparc.Weixin微信开发框架来实现网页授权来获取用户基本信息.先生成包含授权及回调url信息的二维码:用户用微信扫描之后,被要求授权以获取Ta的用户基本信息:用户授权后,通过 ...

  6. C# 数据类型与PostgreSQL 数据类型映射

    Npgsql 是基于ADO.NET 的PostgreSQL 数据驱动. Npgsql 官方 已经提供C# 数据类型与PostgreSQL数据类型的对应映射 地址: http://www.npgsql. ...

  7. MVC4+WebApi+Redis Session共享练习(下)

    上一篇文章我们主要讲解了一些webApi和redis缓存操作,这篇文章我们主要说一些MVC相关的知识(过滤器和错误处理),及采用ajax调用webApi服务. 本篇例子采用的开发环境为:VS2010( ...

  8. 从Java看跨平台的.NET需要些什么?

    跨平台的运行时(Runtime):JRE(JVM)  -> .NET Core CLR . 跨平台的编译器(Compiler):javac  -> Roslyn [github.com/d ...

  9. C语言 栈 顺序结构 实现

    一个能够自动扩容的顺序结构的栈 ArrStack 实例 (GCC编译). /** * @brief C语言实现的顺序结构类型的栈 * @author wid * @date 2013-10-29 * ...

  10. 开发VR游戏的基本要求

    由于我对VR技术的兴趣,我特意去网上查找了一下如果要从事VR游戏的开发,程序员要掌握的一些能力和要求.可能不太详细,只供参考. 1. C++ 语言必须过关,现在大部分的3dengine都用c++,不管 ...