Freemarker 最简单的例子程序
 
freemarker-2.3.18.tar.gz
 
 
1、通过String来创建模版对象,并执行插值处理
 
import freemarker.template.Template;

import java.io.OutputStreamWriter; 
import java.io.StringReader; 
import java.util.HashMap; 
import java.util.Map;

/** 
* Freemarker最简单的例子 

* @author leizhimin 11-11-17 上午10:32 
*/ 
public class Test2 { 
        public static void main(String[] args) throws Exception{ 
                //创建一个模版对象 
                Template t = new Template(null, new StringReader("用户名:${user};URL:    ${url};姓名:  ${name}"), null); 
                //创建插值的Map 
                Map map = new HashMap(); 
                map.put("user", "lavasoft"); 
                map.put("url", "http://www.baidu.com/"); 
                map.put("name", "百度"); 
                //执行插值,并输出到指定的输出流中 
                t.process(map, new OutputStreamWriter(System.out)); 
        } 
}

 
执行后,控制台输出结果:
用户名:lavasoft;URL:    http://www.baidu.com/;姓名:  百度 
Process finished with exit code 0
 
 
2、通过文件来创建模版对象,并执行插值操作
 
import freemarker.template.Configuration; 
import freemarker.template.Template;

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

/** 
* Freemarker最简单的例子 

* @author leizhimin 11-11-14 下午2:44 
*/ 
public class Test { 
        private Configuration cfg;            //模版配置对象

public void init() throws Exception { 
                //初始化FreeMarker配置 
                //创建一个Configuration实例 
                cfg = new Configuration(); 
                //设置FreeMarker的模版文件夹位置 
                cfg.setDirectoryForTemplateLoading(new File("G:\\testprojects\\freemarkertest\\src")); 
        }

public void process() throws Exception { 
                //构造填充数据的Map 
                Map map = new HashMap(); 
                map.put("user", "lavasoft"); 
                map.put("url", "http://www.baidu.com/"); 
                map.put("name", "百度"); 
                //创建模版对象 
                Template t = cfg.getTemplate("test.ftl"); 
                //在模版上执行插值操作,并输出到制定的输出流中 
                t.process(map, new OutputStreamWriter(System.out)); 
        }

public static void main(String[] args) throws Exception { 
                Test hf = new Test(); 
                hf.init(); 
                hf.process(); 
        } 
}

 
创建模版文件test.ftl
<html> 
<head> 
    <title>Welcome!</title> 
</head> 
<body> 
    <h1>Welcome ${user}!</h1> 
    <p>Our latest product: 
    <a href="${url}">${name}</a>! 
</body> 
</html>

尊敬的用户你好: 
用户名:${user}; 
URL:    ${url}; 
姓名:  ${name}

 
执行后,控制台输出结果如下:
<html> 
<head> 
    <title>Welcome!</title> 
</head> 
<body> 
    <h1>Welcome lavasoft!</h1> 
    <p>Our latest product: 
    <a href="http://www.baidu.com/">百度</a>! 
</body> 
</html>

尊敬的用户你好: 
用户名:lavasoft; 
URL:    http://www.baidu.com/; 
姓名:  百度 
Process finished with exit code 0

Freemarker简单用法的更多相关文章

  1. CATransition(os开发之画面切换) 的简单用法

    CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...

  2. jquery.validate.js 表单验证简单用法

    引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...

  3. NSCharacterSet 简单用法

    NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...

  4. [转]Valgrind简单用法

    [转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...

  5. Oracle的substr函数简单用法

    substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 subst ...

  6. Ext.Net学习笔记19:Ext.Net FormPanel 简单用法

    Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...

  7. TransactionScope简单用法

    记录TransactionScope简单用法,示例如下: void Test() { using (TransactionScope scope = new TransactionScope()) { ...

  8. WPF之Treeview控件简单用法

    TreeView:表示显示在树结构中分层数据具有项目可展开和折叠的控件 TreeView 的内容是可以包含丰富内容的 TreeViewItem 控件,如 Button 和 Image 控件.TreeV ...

  9. listActivity和ExpandableListActivity的简单用法

    http://www.cnblogs.com/limingblogs/archive/2011/10/09/2204866.html 今天自己简单的总结了listActivity和Expandable ...

随机推荐

  1. Android 监听apk安装替换卸载广播

    首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程 ...

  2. c语言指针笔记

    一.int a[20]1. 数组名代表数组首元素的地址,不代表数组的地址2. 对数组名取地址代表整个数组的地址.a和&a代表的数据类型不一样 a代表数组首元素的地址 &a数组类型 in ...

  3. C语言char*字符串数组和unsigned char[]数组的相互转换

    #include <iostream> #include <string> using namespace std; void convertUnCharToStr(char* ...

  4. LINUX网络之ifconfig命令与ping

    ifconfig命令 网络配置 ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数.用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在.要想将上述的配置信息 ...

  5. spring boot配置文件application.propertis

    转自http://www.qiyadeng.com/post/spring-boot-application-properties 本文记录Spring Boot application.proper ...

  6. (转)C语言中长度为0的数组

    前面在看Xen的源码时,遇到了一段代码,如下所示: 注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?……这篇文章主要针对该 ...

  7. 安装windows7/8/10到U盘或移动硬盘

    https://jingyan.baidu.com/article/e52e36156f6ad240c60c518c.html jpg改rar

  8. SQL - ROW_NUMBER,Rank 添加序号列

    百度的时候查到的博客: http://blog.csdn.net/xsfqh/article/details/6663895-------------------------------------- ...

  9. luanet分布式lua框架

    luanet最初只是一个网络框架,它简单的封装了一些网络相关接口然后暴露到lua中,让lua可以构建简单的网络应用. 随着我的手游服务器的开发,我发现在C语言中要实现一个简洁易用的RPC调用接口并不容 ...

  10. java基础---->java的新特性(一)

    通过简单的实例来感觉一下java7和java8的新特性.当那条唯捷径省略了朝拜者,我便在一滴花露中瞬间彻悟. java7代码实例 一.java7中switch中可以字符串 @Test public v ...