freemarker入门实例

1、设计思路

(1)新建Maven Project

(2)生成freemarker模板

(3)写freemarker页面ftl文件

(4)写测试文件

2、新建Maven Project



3、生成freemarker模板

FreemarkerTemplate.java:

/**
 * @Title:FreemarkerTemplate.java
 * @Package:com.you.freemarker
 * @Description:freemarker模板
 * @author:Youhaidong(游海东)
 * @date:2014-5-25 下午11:18:00
 * @version V1.0
 */
package com.you.freemarker;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

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

/**
 * 类功能说明
 * 类修改者 修改日期
 * 修改说明
 * <p>Title:FreemarkerTemplate.java</p>
 * <p>Description:游海东个人开发</p>
 * <p>Copyright:Copyright(c)2013</p>
 * @author:游海东
 * @date:2014-5-25 下午11:18:00
 * @version V1.0
 */
public class FreemarkerTemplate
{
	  /**
	   * 生成freemarker模板文件
	   * @Title:getTemplate
	   * @Description:
	   * @param:@param name
	   * @param:@return
	   * @return:Template
	   * @throws
	   */
      public Template getTemplate(String name)
      {
    	  try
    	  {
    		  //通过FreeMarker的Configuration读取相应的FTL
    		  Configuration conf = new Configuration();
    		  //设置去哪里读取相应的ftl模板文件
        	  conf.setClassForTemplateLoading(this.getClass(), "/com/you/ftl");
        	  //在模板文件目录中找到名称为name的文件
        	  Template temp = conf.getTemplate(name);
        	  return temp;
		  }
    	  catch (IOException e)
		  {
			  e.printStackTrace();
		  }
		return null;
      }

      /**
       * 将结果输出到控制台
       * @Title:printFtl
       * @Description:
       * @param:@param name
       * @param:@param root
       * @return: void
       * @throws
       */
      public void printFtl(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();
		  }
      }
}

4、写freemarker页面ftl文件

user.ftl:

姓名:${username}
年龄:${age}
性别:${sex}

5、写测试文件

FreemarkerTest.java:

/**
 * @Title:FreemarkerTest.java
 * @Package:com.you.test.freemarker
 * @Description:Freemarker测试
 * @author:Youhaidong(游海东)
 * @date:2014-5-25 下午11:32:15
 * @version V1.0
 */
package com.you.test.freemarker;

import java.util.HashMap;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import com.you.freemarker.FreemarkerTemplate;

/**
 * 类功能说明
 * 类修改者 修改日期
 * 修改说明
 * <p>Title:FreemarkerTest.java</p>
 * <p>Description:游海东个人开发</p>
 * <p>Copyright:Copyright(c)2013</p>
 * @author:游海东
 * @date:2014-5-25 下午11:32:15
 * @version V1.0
 */
public class FreemarkerTest
{
	FreemarkerTemplate ft;

	/**
	 *
	 * @Title:buildUp
	 * @Description:实例化对象
	 * @param:
	 * @return: void
	 * @throws
	 */
	@Before
	public void buildUp()
	{
		ft = new FreemarkerTemplate();
	}

	/**
	 *
	 * @Title:testFreemarker
	 * @Description:测试结果
	 * @param:
	 * @return: void
	 * @throws
	 */
	@Test
	public void testFreemarker()
	{
		//创建数据模型
		Map<String,Object> root = new HashMap<String,Object>();
		//为数据模型添加值
		root.put("username", "张三");
		root.put("age", "22");
		root.put("sex", "男");
		//将数据模型和模板中的数据输出到控制台
		ft.printFtl("user.ftl", root);
	}

}

6、测试结果

姓名:张三
年龄:22
性别:男

freemarker入门实例的更多相关文章

  1. freemarker入门实例与源码研究准备工作

    首先去freemarker官网下载源码jar包,本文是基于freemarker-2.3.21.tar.gz进行研究的.解压源码包,找到freemarker的源码部分导入eclipse工程中.需要注意的 ...

  2. React 入门实例教程(转载)

    本人转载自: React 入门实例教程

  3. struts入门实例

    入门实例 1  .下载struts-2.3.16.3-all  .不摆了.看哈就会下载了. 2  . 解压  后 找到 apps 文件夹. 3.    打开后将 struts2-blank.war   ...

  4. Vue.js2.0从入门到放弃---入门实例

    最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中,在网上也搜了很多教程,按着教程来做,也总会出现这样那样的问题(坑啊,由于网上那些教程都是Vue.js 1.x版本的,现在用 ...

  5. wxPython中文教程入门实例

    这篇文章主要为大家分享下python编程中有关wxPython的中文教程,分享一些wxPython入门实例,有需要的朋友参考下     wxPython中文教程入门实例 wx.Window 是一个基类 ...

  6. Omnet++ 4.0 入门实例教程

    http://blog.sina.com.cn/s/blog_8a2bb17d01018npf.html 在网上找到的一个讲解omnet++的实例, 是4.0下面实现的. 我在4.2上试了试,可以用. ...

  7. Spring中IoC的入门实例

    Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如 ...

  8. Node.js入门实例程序

    在使用Node.js创建实际“Hello, World!”应用程序之前,让我们看看Node.js的应用程序的部分.Node.js应用程序由以下三个重要组成部分: 导入需要模块: 我们使用require ...

  9. Java AIO 入门实例(转)

    Java7 AIO入门实例,首先是服务端实现: 服务端代码 SimpleServer: public class SimpleServer { public SimpleServer(int port ...

随机推荐

  1. select标签实现二级联动

    效果如下图所示: 实现的原理:使用onchange事件,原理见代码 html代码: <select id="select" class="sel"> ...

  2. transfer-webpack-plugin最简使用示例

    转移文件的插件 加载插件 $ npm install transfer-webpack-plugin --save-dev API new CopyWebpackPlugin(patterns: Ar ...

  3. Linux根据UUID自动挂载磁盘分区

    一般服务器都有多个硬盘分区,在重启后,这些分区的逻辑位置加载时可能会发生变动,如果使用传统的设备名称(例如:/dev/sda)方式挂载磁盘,就可能因为磁盘顺序变化而造成混乱. Linux环境中每个Bl ...

  4. 创建一个vue项目的过程

    创建一个vue项目: 1.首先从UI手上拿到PSD设计图,然后看设计搞的内容,需要做个大概的页面布局 2.做vue之前不许安装node,因为做vue项目要和node结合使用 3.然后安装vue脚手架: ...

  5. [Sdoi2017]相关分析 [线段树]

    [Sdoi2017]相关分析 题意:沙茶线段树 md其实我考场上还剩一个多小时写了40分 其实当时写正解也可以吧1h也就写完了不过还要拍一下 正解代码比40分短2333 #include <io ...

  6. BZOJ 1194: [HNOI2006]潘多拉的盒子 [DP DFA]

    传送门 题意: s个DFA,选出尽量多的自动机a0, a1, a2, . . . , at,使得a1包含a0.a2包 含a1,以此类推.s ≤ 50. DFA的字符集为{0,1},有的节点是输出源,节 ...

  7. BZOJ 1018: [SHOI2008]堵塞的交通traffic [线段树 区间信息]

    1018: [SHOI2008]堵塞的交通traffic Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 3064  Solved: 1027[Submi ...

  8. Azure Automation (5) 调整Azure SQL Database DTU

    <Windows Azure Platform 系列文章目录> 之前有客户提了需求,在9点以后,把Azure SQL Database DTU提高 在凌晨,把Azure SQL Datab ...

  9. 发放春节福利,ASP.NET Core断点续传

    ASP.NET Core断点续传 在ASP.NET WebAPi写过完整的断点续传文章,目前我对ASP.NET Core仅止于整体上会用,对于原理还未去深入学习,由于有园友想看断点续传在ASP.NET ...

  10. js短路表达式

    今天碰见个题目,感觉短路表达式很好用. 题目: 定义一个计算圆面积的函数area_of_circle(),它有两个参数: r: 表示圆的半径: pi: 表示π的值,如果不传,则默认3.14 funct ...