文档章节

FreeMarker入门教程

孙亮
 孙亮
发布于 2017/04/22 18:04
字数 535
阅读 13
收藏 0

下载freemarker

http://freemarker.sourceforge.net/freemarkerdownload.html

项目文件:freemarker-2.3.19.tar.gz

中文文档:FreeMarker_Manual_zh_CN.pdf

解压后把freemarker.jar加到classpath中即可完成环境的配置

定义模板文件

我们创建两个模板文件,一个是纯文本的模板文件,另一个是HTML格式的模板文件,主要是为了说明,freemarker的模板文件可以是任何格式的

01.ftl

你好:${username}

02.ftl

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${username}</h1>
</body>
</html>

创建freemarker工具类

这个类,主要是获取模板定义文件,并根据输入的数据输出到控制台和文件中

package com.naxsu.freemarker;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreemarkerUtil {
    /**
     * 获取模板
     * @param name
     * @return
     */
    public Template getTemplate(String name) {
    try {
        //通过Freemaker的Configuration读取相应的ftl
        Configuration cfg = new Configuration();
        //设定去哪里读取相应的ftl模板文件
        cfg.setClassForTemplateLoading(this.getClass(),"/ftl");
        //在模板文件目录中找到名称为name的文件
        Template temp = cfg.getTemplate(name);
        return temp;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
    }
    /**
     * 输出到控制台
     * @param name 模板文件名
     * @param root
     */
    public void print(String name,Map<String,Object> root) {
        try {
            //通过Template可以将模板文件输出到相应的流
        Template temp = this.getTemplate(name);
        temp.process(root, new PrintWriter(System.out));
    } catch (TemplateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    }
    /**
     * 输出到文件
     * @param name
     * @param root
     * @param outFile
     */
    public void fprint(String name,Map<String,
                       Object> root,String outFile) {
    FileWriter out = null;
    try {
            //通过一个文件输出流,就可以写到相应的文件中
        out = new FileWriter(
                      new File("E:\\freemarker\\ftl\\"+outFile));
        Template temp = this.getTemplate(name);
        temp.process(root, out);
    } catch (IOException e) {
        e.printStackTrace();
    } catch (TemplateException e) {
        e.printStackTrace();
    } finally {
        try {
        if(out!=null) out.close();
        } catch (IOException e) {
        e.printStackTrace();
        }
    }
    }
}

模拟数据,进行测试

public class TestFreemarker {
    FreemarkerUtil fu;
    Map<String,Object> root = null;
    @Before
    public void setUp() {
        fu = new FreemarkerUtil();
        root = new HashMap<String,Object>();
    }
    @Test
    public void test01() {
        //1、创建数据模型
        Map<String,Object> root = new HashMap<String,Object>();
        //2、为数据模型添加值
        root.put("username", "张三");
        //3、将数据模型和模板组合的数据输出到控制台
        fu.print("01.ftl", root);
        fu.fprint("02.ftl", root, "01.html");
    }
}

好了,helloword到此为止,简单入门就是如此简单

本文链接:FreeMarker入门教程,本文由huangyineng原创,转载请注明出处

本文转载自:http://www.cnblogs.com/sdauraul/archive/2012/12/18/2824263.html

共有 人打赏支持
孙亮
粉丝 7
博文 28
码字总数 4775
作品 0
昌平
技术主管
FreeMarker在eclipse中的入门例子

刚接触FreeMarker时,只是简单的了解FreeMarker的一些概念及工作原理,至于如何使用FreeMarker还不是非常清楚。随着学习的深入,才渐渐对FreeMarker有了更深入的理解。本文将从基础应用着手,...

oecp
2011/05/16
0
0
FreeMarker在eclipse中的入门例子

今天海浪为大家分享一个FreeMarker在eclipse中的入门例子。 一、在eclipse中创建FreeMarker模板 在FreeMarker中模板的概念就是:包含一些由${…}包围的特殊代码的文件。这些特殊代码是FreeM...

oecp
2011/04/26
0
0
手把手教你新建Jfinal 项目(五)

Freemarker原理解析 2011-05-13 11:19:41| 分类: JavaEE | 标签:freemarker 模板 变量 数据模型 文件 |字号 订阅 FreeMarker生成静态页原理 FreeMarker适合于作为Web应用的表现层。freemar...

胡萝卜炒肉
2014/05/29
0
1
Eclipse安装Freemarker Editor插件

Eclipse安装Freemarker Editor插件 在下面网址里下载freemarker-ide: http://sourceforge.net/projects/freemarker-ide/files/ http://sourceforge.net/projects/freemarker-ide/files/ 下载......

风中帆
2015/02/10
0
1
freemaker开发学习《一》

 FreeMarker是一个非常优秀的模板引擎,这个模板引擎可用于任何场景,FreeMarker负责将数据模型中的数据合并到模板中,从而生成标准输出.FreeMarker可以提供昜好的团队协作,对于界面开发人...

xiaml
2014/04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

白话SpringCloud | 第十章:路由网关(Zuul)进阶:过滤器、异常处理

前言 简单介绍了关于Zuul的一些简单使用以及一些路由规则的简单说明。而对于一个统一网关而言,需要处理各种各类的请求,对不同的url进行拦截,或者对调用服务的异常进行二次处理等等。今天,...

oKong
刚刚
0
0
详解nohup和& 区别

详解nohup和& 区别 2017年11月29日 16:57:38 King-Long 阅读数:7266 版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/u011095110/article/details/78666833 nohup 一、【解...

linjin200
12分钟前
0
0
Character的static方法

基本类型char的包装类是Character,使用的比较多,大家是比较熟悉的。 我只是觉得里面有很多static方法,平时不怎么用,学习一下怎么实现的,或许日后就用到了。 static int compare(char x,...

woshixin
12分钟前
0
0
正则介绍_sed

10月17日任务 9.4/9.5 sed sed工具 匹配打印 -n 只打印匹配行,不然其他行也会打印出来 p 打印(配合-n使用) [root@centos7 tmp]# sed -n '/root/'p passwd root:x:0:0:root:/root:/bin/ba...

robertt15
13分钟前
0
0
轻松解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码

轻松解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码 2013年05月22日 15:18:05 秋实先生 阅读数:14826 这里解码百度访问统计代码构造函数为示例: 百度访问统计代码JavaScript源码:...

_纵横捭阖_
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部