freemarker入门实例
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入门实例的更多相关文章
- freemarker入门实例与源码研究准备工作
首先去freemarker官网下载源码jar包,本文是基于freemarker-2.3.21.tar.gz进行研究的.解压源码包,找到freemarker的源码部分导入eclipse工程中.需要注意的 ...
- React 入门实例教程(转载)
本人转载自: React 入门实例教程
- struts入门实例
入门实例 1 .下载struts-2.3.16.3-all .不摆了.看哈就会下载了. 2 . 解压 后 找到 apps 文件夹. 3. 打开后将 struts2-blank.war ...
- Vue.js2.0从入门到放弃---入门实例
最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中,在网上也搜了很多教程,按着教程来做,也总会出现这样那样的问题(坑啊,由于网上那些教程都是Vue.js 1.x版本的,现在用 ...
- wxPython中文教程入门实例
这篇文章主要为大家分享下python编程中有关wxPython的中文教程,分享一些wxPython入门实例,有需要的朋友参考下 wxPython中文教程入门实例 wx.Window 是一个基类 ...
- Omnet++ 4.0 入门实例教程
http://blog.sina.com.cn/s/blog_8a2bb17d01018npf.html 在网上找到的一个讲解omnet++的实例, 是4.0下面实现的. 我在4.2上试了试,可以用. ...
- Spring中IoC的入门实例
Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如 ...
- Node.js入门实例程序
在使用Node.js创建实际“Hello, World!”应用程序之前,让我们看看Node.js的应用程序的部分.Node.js应用程序由以下三个重要组成部分: 导入需要模块: 我们使用require ...
- Java AIO 入门实例(转)
Java7 AIO入门实例,首先是服务端实现: 服务端代码 SimpleServer: public class SimpleServer { public SimpleServer(int port ...
随机推荐
- nodejs建立websocket通信
依赖模块 nodejs-websocket 服务端 const ws = require('nodejs-websocket'); console.log('开始建立连接...'); const se ...
- Effective Java 之-----关于延迟初始化
1.大多数情况下,正常的初始化要优先于延迟初始化. private final FieldType field = computeFieldValue(); 2.如果利用延迟优化来破坏初始化的循环,就 ...
- ABP示例程序-使用AngularJs,ASP.NET MVC,Web API和EntityFramework创建N层的单页面Web应用
本片文章翻译自ABP在CodeProject上的一个简单示例程序,网站上的程序是用ABP之前的版本创建的,模板创建界面及工程文档有所改变,本文基于最新的模板创建.通过这个简单的示例可以对ABP有个更深 ...
- Spring源码情操陶冶-DefaultBeanDefinitionDocumentReader#parseBeanDefinitions
前言-阅读源码有利于陶冶情操,本文承接前文Spring源码情操陶冶-AbstractApplicationContext#obtainFreshBeanFactory 前文提到最关键的地方是解析bea ...
- Python基础篇(七)
加上两个下划线变量或者方法变为私有. >>> class Bird: ... __song = "spark" ... def sing(self): ...
- 如何解决Linux 系统下 ifconfig 命令无网络接口 ens33
今天我在做Redis的哨兵集群模式的时候,以前都是好的,也不知道从什么时候开始就无法连接Redis服务器了,就是运行如下命令,没有效果:redis-server redis.conf,然后在通过命令查 ...
- BZOJ 2565: 最长双回文串 [Manacher]
2565: 最长双回文串 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1842 Solved: 935[Submit][Status][Discu ...
- HibernateTemplate#setMaxResults()的坑
如题所示,因为maxResults为实例属性,一经修改,则会应用于所有查询! 不是很清楚,Spring为什么要挖这个坑? 我的解决方案:如需设置返回结果集的大小,则通过HibernateCallbac ...
- 使用Python的requests库进行接口测试——session对象的妙用
from:http://blog.csdn.net/liuchunming033/article/details/48131051 在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有 ...
- CSS3 @keyframes 用法(简单动画实现)
定义: 通过 @keyframes 规则,能够创建动画. 创建动画的原理是,将一套 CSS 样式逐渐变化为另一套样式. 在动画过程中,可以多次改变这套 CSS 样式. 以百分比来规定改变发生的时间,或 ...