简单的freemarker解析测试
本文是一个很简单很基础的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解析测试的更多相关文章
- 非常简单的XML解析(SAX解析、pull解析)
这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 package com.example.demo.service; import java.io.IOException; import ...
- 自己动手实现一个简单的JSON解析器
1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着诸多优点.比如易读性更好,占用空间更少等.在 ...
- 一个简单的json解析器
实现一个简单地json解析器. 两部分组成,词法分析.语法分析 词法分析 package com.mahuan.json; import java.util.LinkedList; import ja ...
- 基于 Roslyn 实现一个简单的条件解析引擎
基于 Roslyn 实现一个简单的条件解析引擎 Intro 最近在做一个勋章的服务,我们想定义一些勋章的获取条件,满足条件之后就给用户颁发一个勋章,定义条件的时候会定义需要哪些参数,参数的类型,获取勋 ...
- 用c#自己实现一个简单的JSON解析器
一.JSON格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着很多优点.例如易读性更好,占用空间更 ...
- 简单sql字段解析器实现参考
用例:有一段sql语句,我们需要从中截取出所有字段部分,以便进行后续的类型推断,请给出此解析方法. 想来很简单吧,因为 sql 中的字段列表,使用方式有限,比如 a as b, a, a b... 1 ...
- 简单的URL解析
简单的URL解析,直接举例说明了 function getUrl(){ //如果存在则取到来后面的参数,注意,?不需要取出,substring从1开始,否则取""; var qs ...
- FFmpeg的HEVC解码器源码简单分析:解析器(Parser)部分
===================================================== HEVC源码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpeg ...
- FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分
===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...
随机推荐
- 说说ID选择符、类选择符和HTML标记选择符的优先级顺序
ID选择符.类选择符和HTML标记选择符三者之间的优先级顺序是:ID选择符>类选择符>HTML标记选择符,但是可以用!important提升优先权. 如: p{color:#f ...
- @Autowired @Resource用法
@Autowired的用法和作用 这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get. <bean id="u ...
- 搭建Openstack云平台
实验室需要做一个大数据平台项目,临时接下需要部署实验室云平台的任务,由于之前没有接触过相关技术,仅以此篇作为纪录文,记录一下我的openstack的初步学习以及搭建过程. 1.openstcak及其组 ...
- 开关电源-BUCK
DCDC 称为直流直流变换,将直流电进行斩波,形成脉动的直流电压,最后经过储能,滤波电路留平滑输出,使得输出为直流电.在这期间运用PWM或PFM调制方法.(PWM:pulse width ...
- Redis使用总结之与Memcached异同
Redis是什么?两句话可以做下概括: 1. 是一个完全开源免费的key-value内存数据库 2. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings.map. list ...
- python 列表生成器
python 列表生成器 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 一个循环 在C语言等其他语言中,for循环一般是这样的 ...
- web应用性能测试-Tomcat 7 连接数和线程数配置
转自:http://www.jianshu.com/p/8445645b3aff 引言 这段时间折腾了哈java web应用的压力测试,部署容器是tomcat 7.期间学到了蛮多散碎的知识点,及时梳理 ...
- Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)
目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能---- ...
- django with mysql (part-3)
step01: write second view-function vim views.py step02: configure your ( urls.py ) vim urls.py step0 ...
- django with mysql (part-2)
step01: write a ( views.py ) file vim views.py Insert the below code : step02: configure your ( urls ...