首先导入包,freemarker.jar
 
下载地址: 
freemarker-2.3.18.tar.gz
 
当然如果是Maven项目,可以从仓库里面下载,这里不赘述;
 
 
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

转自:http://lavasoft.blog.51cto.com/62575/716825/

Freemarker 最简单的例子程序的更多相关文章

  1. FreeMarker最简单的例子(2)

    二.通过String来创建模版对象,并执行插值处理 代码: package com.abc; import freemarker.template.Template; import java.io.O ...

  2. FreeMarker最简单的例子(1)

    一.通过文件来创建模版对象,并执行插值操作 文件结构为: Test.Java中的代码为: package com.abc; import freemarker.template.Configurati ...

  3. CSharpGL(1)从最简单的例子开始使用CSharpGL

    CSharpGL(1)从最简单的例子开始使用CSharpGL 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo ...

  4. [OSG]OSG例子程序简介

    1.example_osganimate一)演示了路径动画的使用(AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera.CameraView.M ...

  5. C#编写简单的聊天程序

    这是一篇基于Socket进行网络编程的入门文章,我对于网络编程的学习并不够深入,这篇文章是对于自己知识的一个巩固,同时希望能为初学的朋友提供一点参考.文章大体分为四个部分:程序的分析与设计.C#网络编 ...

  6. Spring-Context之一:一个简单的例子

    很久之前就想系统的学习和掌握Spring框架,但是拖了很久都没有行动.现在趁着在外出差杂事不多,就花时间来由浅入深的研究下Spring框架.Spring框架这几年来已经发展成为一个巨无霸产品.从最初的 ...

  7. 一个简单的flask程序

    初始化 所有Flask程序都必须创建一个程序实例. 程序实例是Flask类的对象,经常使用下述代码创建: from flask import Flask app = Flask(__name__) F ...

  8. Linux系统学习笔记之 1 一个简单的shell程序

    不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊. 一个简单的shell程序 shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步: ...

  9. 为什么C语言在2013年仍然很重要:一个简单的例子

    附注:在最初的文章里,我没说明进行模2^64的计算——我当然明白那些不是“正确的”斐波那契数列,其实我不是想分析大数,我只是想探寻编译器产生的代码和计算机体系结构而已. 最近,我一直在开发Dynvm— ...

随机推荐

  1. dom4j学习总结(一)

    dom4j学习总结(一) (一)创建Document的基本操作 /**  * xml基本操作  */ public void BaseOperation(){  //创建一个document  Doc ...

  2. [Perl]Can't link/include C library 'ft2build.h', 'freetype', aborting.

    原文:http://www.code-by.org/viewtopic.php?f=60&t=284 错误提示 Font-FreeType-0.07>perl Makefile.PL B ...

  3. asp.net mvc项目创建WebApi简单例子

    1.创建默认路由的映射. namespace RedisDemo.App_Start { public class WebApiConfig { public static void Register ...

  4. 域适应(Domain adaptation)

    定义 在迁移学习中, 当源域和目标的数据分布不同 ,但两个任务相同时,这种 特殊 的迁移学习 叫做域适应 (Domain Adaptation). Domain adaptation有哪些实现手段呢? ...

  5. less配置

    一.sublime text需要下载考拉,然后要 一直打开着: 1.编译工具用koala编译 下载地址:http://koala-app.com/index-zh.html 2.LESS中的注释: 可 ...

  6. 8、insert、delete、update语句总结

    insert常用语句 > insert into tb1 (name,age) values('tom',33); > insert into tb1 (name,age) values( ...

  7. “全栈2019”Java第三十八章:类与方法

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. vue.js 知识点(二)

    关于vue看到有很多的知识点和react有很多相近的地方,比如说路由还有一些简单的运用,但是又有一些不同,比如格式.还有写法的一些不同! 所以在这里我总结一下关于vue 关于路由的一些运用: 路由: ...

  9. CRC循环冗余校验算法

    现实中通信链路都不会是理想的,比特在传输的过程中可能会出现差错,0变成1,1变成0.这就叫做比特差错.因此为了保证数据传输的可靠性,在计算网络传输数据时,必须采用各种检验措施来处理比特差错.在数据链路 ...

  10. [ActionScript 3.0] 利用InteractivePNG.as类精确选择识别png图片有像素的区域

    用法:如果是把png直接导入flash转换成影片剪辑,只需在影片剪辑属性中勾选为ActionScript导出(x),并把基类里的flash.display.MovieClip替换成Interactiv ...