FreeMarker

FreeMarker简介

FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本
(HTML 网页、电子邮件、配置文件、源代码等)的通用工具。FreeMarker 是免费的,基于
Apache 许可证 2.0 版本发布。其模板编写为 FreeMarker Template Language(FTL),属于简单、
专用的语言。 

FreeMarker原理图

FreeMarker数据合成简单示例 

(在线帮助文档-freeMarker)http://tool.oschina.net/apidocs/apidoc?api=freemarker 

合成器代码片段(TestFreeMarker)

package gentener;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;

/**
 * FreeMarker使用
 */
public class TestFreeMarker {
    /*  公共类配置
        可扩展配置
        实现java.lang.Cloneable
        该类封装了用于运行Freemarker的各种配置参数,并作为中心模板加载和缓存点。
        请注意,该类使用默认策略加载和缓存模板。
        您可以使用模板加载方法插入替换模板加载机制。
        此对象未同步。因此,在您从多个线程开始访问对象后,设置不得更改。
        如果使用多个线程,则在实例化配置对象后直接设置所有内容,Don'不再更改设置。
     */
    private Configuration cfg;//Configuration 对象负责指定应该将哪一个 LoginModule 用于某一特定应用程序,以及应该以什么样的顺序调用 LoginModule。

    public void init() throws Exception {
        //初始化FreeMarker配置
        //创建一个Configuration实例
        cfg = new Configuration();//横线 表示此方法经过过时,有另外一种方法可以替代它
        //设置FreeMarker的模板文件位置(两种方式)
        cfg.setDirectoryForTemplateLoading(new File("D:\\object\\Test\\src\\main\\resources\\templates"));//setDirectoryForTemplateLoading()设置要从中加载模板的显式目录
        //cfg.setClassForTemplateLoading(this.getClass(),"/templates/");//setClassForTemplateLoading()设置一个类,我们将根据该类调用加载模板。
    }

    /**
     * 与模板合成  在控制台输出内容
     *
     * @throws Exception
     */
    public void process() throws Exception {
        Map root = new HashMap();//替换数据信息
        root.put("name", "FreeMarker");
        root.put("msg", "您已经完成了第一个FreeMarker的示例");
        Template template = cfg.getTemplate("test.ftl");//创建模板文件对象
        /*process():处理模板,使用映射中的数据,并将生成的文本输出给提供的编写程序,
        然后使用配置的getObjectrapper()方法返回的默认对象包装器将映射的元素转换为模板模型。*/
        template.process(root, new OutputStreamWriter(System.out));
    }

    /**
     * 与模板合成 实现文件的生成
     *
     * @throws Exception
     */
    public void process2() throws Exception {
        System.out.println("---------------开始生成代码");
        Map root = new HashMap();//替换数据信息
        root.put("name", "FreeMarker2");
        root.put("msg", "文件生成成功!");
        OutputStreamWriter writer = null;
        writer = new FileWriter("D:\\object\\Test\\src\\main\\java\\file\\test.html");
        Template template = cfg.getTemplate("test.ftl");//创建模板文件对象
        template.process(root, writer);
        writer.flush();
        writer.close();
    }

}

 

模板文件(test.ftl)

<html>
<head><title>${name}</title></head>
<body>
    <p>${msg}</p>
</body>
</html>

main方法

package gentener;

/**
 * 入口
 */
public class main {
    public static void main(String[] args)throws Exception{
        TestFreeMarker test = new TestFreeMarker();
        test.init();
        //调用方法显示结果在控制台
        test.process();
        //生成文件方法
        test.process2();
    }
}

执行结果

(结合Freemarker  实现代码生成器欢迎观看我的另一篇博客)

代码生成器——实现生成pojo,sql,mapper接口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值