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. iOS-Runtime的那些事...编辑中....

    Runtime-iOS的黑魔法,还是很好玩的,消息机制.方法替换简单记录了一点,持续更新.... 1.方法替换 在类load方法中,替换系统方法 + (void)load{ Method oldCol ...

  2. python中的各种转化

    1.数之间的转化 #浮点型to整型 >>> int(5.6) 5 #整型to浮点型 >>> float(5) 5.0 2.数与字符串 #字符串to整型 >&g ...

  3. Log4Net记录到MySql

    1.新建控制台程序. 2.添加Log4Net nuget 3.添加MySql 引用 4.添加配置文件如下: <?xml version="1.0"?> <conf ...

  4. 在eclipse的配置文件里指定jdk路径

    在eclipse的配置文件里指定jdk路径,只需在eclipse的配置文件里增加-vm参数即可. 打开eclipse目录下的eclipse.ini配置文件,增加-vm配置,需要注意的是该参数要加在-v ...

  5. Python基础篇(六)

    retun空值,后面的语句将不再被执行 >>> def test(): ...    print("just a test!") ...    return .. ...

  6. vue-router 二级路由

    /** * Created by 我 on 2017/12/4. */ import Vue from 'vue' //import导入 Vue(自己起的名) from 从 vue import Vu ...

  7. 洛谷 [P2825] 游戏

    二分图匹配的匈牙利算法 这道题,如果没有硬石头的限制,那么就与ZJOI 2007矩阵游戏完全一样,但是如果有了硬石头的限制,我们就不能将整行整列作为元素建图,我们可以以硬石头为边界,将每一行.每一列分 ...

  8. UOJ 241. 【UR #16】破坏发射台 [矩阵乘法]

    UOJ 241. [UR #16]破坏发射台 题意:长度为 n 的环,每个点染色,有 m 种颜色,要求相邻相对不能同色,求方案数.(定义两个点相对为去掉这两个点后环能被分成相同大小的两段) 只想到一个 ...

  9. yii2 源码分析 model类分析 (五)

    模型类是数据模型的基类.此类继承了组件类,实现了3个接口 先介绍一下模型类前面的大量注释说了什么: * 模型类是数据模型的基类.此类继承了组件类,实现了3个接口 * 实现了IteratorAggreg ...

  10. javac编译乱码

    PersonTest.java:1: 错误: 非法字符: \65279 解决途径如下 用记事本打开java源文件,另存为ANSI格式 如果java文件包含中文字符,使用-encoding gbk格式进 ...