Freemarker是曾经很流行的一个模板库,它是一种通用的模板库,不仅仅可以用来渲染html。

模板可以分为两类:

  • 只能生成特殊类型文件的模板,如jinja、django、Thymeleaf、jade等模板只能生成HTML
  • 通用型模板,如mustache、Freemarker

本文展示Freemarker的基本用法,实现一个render(context,templatePath)函数来根据context渲染templatePath路径下的Freemarker模板。

maven依赖

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

Freemarker.java

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.Version; import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map; public class Freemarker {
Configuration conf; public Freemarker(Path templatePath) {
conf = new Configuration(new Version(2, 3, 23));
conf.setDefaultEncoding("utf8");
try {
conf.setDirectoryForTemplateLoading(templatePath.toFile());
} catch (IOException e) {
e.printStackTrace();
}
} public void render(Object obj, String templatePath, PrintWriter out) {
try {
Template template = conf.getTemplate(templatePath);
template.process(obj, out);
out.flush();
} catch (IOException | TemplateException e) {
e.printStackTrace();
}
} public String render(Object obj, String templatePath) {
StringWriter cout = new StringWriter();
PrintWriter writer = new PrintWriter(cout);
render(obj, templatePath, writer);
writer.close();
return cout.toString();
} public static void main(String[] args) throws IOException, TemplateException {
Map<String, Integer> ma = new HashMap<>();
ma.put("one", 1);
ma.put("two", 2);
ma.put("three", 3);
String ans = new Freemarker(Paths.get(".")).render(ma, "haha.ftl");
System.out.println(ans);
}
}

Freemarker简单封装的更多相关文章

  1. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  2. FMDB简单封装和使用

    工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...

  3. Android--Retrofit+RxJava的简单封装(三)

    1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...

  4. okhttp3 get post 简单封装

    最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...

  5. python网页请求urllib2模块简单封装代码

    这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...

  6. 对pymysql的简单封装

    #coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...

  7. iOS开发——UI篇OC篇&UITableView简单封装

    UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...

  8. iOS sqlite 增删改查 简单封装(基于 FMDB)

    /** *  对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * *  基于 FMDB * *  操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整 ...

  9. ADO简单封装(MFC)

    简单封装了一下,不是很严谨. /************************************************************************/ /* INSTRUC ...

随机推荐

  1. JavaScript 日期

    JavaScript 日期 JavaScript 日期输出 默认情况下,JavaScript将使用浏览器的时区并将日期格式显示为全文本字符串: Tue Apr 02 2019 09:01:19 GMT ...

  2. 使用Spring访问Mongodb的方法大全——Spring Data MongoDB

    1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库.本文介绍使用Spring Data MongoDB来访问mongod ...

  3. 7. Go语言—时间模块

    一.时间模块 1. 统计程序执行时间 package main import ( "time" "fmt" ) func test() { time.Sleep ...

  4. NOI2015 软件包管器

    NOI2015 软件包管器 https://www.luogu.org/problem/P2146 题意 维护一棵树,每个节点都有一个为0或1的值,初始值全为0 需要支持 将一条链上的点都变成1, 将 ...

  5. Pwnable-blackjack

    游戏源码 http://cboard.cprogramming.com/c-programming/114023-simple-blackjack-program.html 打开之后是一个游戏 你有5 ...

  6. Pwnable-random

    ssh连接,输入密码查看目录下的文件 看看random.c的源码 #include <stdio.h> int main(){ unsigned int random; random = ...

  7. scrapy 爬取视频

    利用FilesPipeline 下载视频 1.setting.py # 保存log信息的文件名 LOG_LEVEL = "INFO" # LOG_STDOUT = True # L ...

  8. 环形链表 II

    给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 - ...

  9. lua 6 函数

    定义: function max(num1, num2) local result = 0 if (num1 > num2) then result = num1; else result = ...

  10. OpenDaylight开发hello-world项目之开发环境搭建

    OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...