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 ...
随机推荐
- VBoxManage命令速记
1.IDE控制器创建:VBoxManage storagectl testvm --name "IDE Controller" --add ide卸载VBoxManage stor ...
- ansible playbook实践(一)-基础环境安装
1 介绍 Ansible 是一个系统自动化工具,用来做系统配管理,批量对远程主机执行操作指令. 2 实验环境 ip 角色 192.168.40.71 ansible管控端 192.168.40.72 ...
- [LeetCode] 679. 24 Game(回溯法)
传送门 Description You have 4 cards each containing a number from 1 to 9. You need to judge whether the ...
- JDBC【数据库连接池、DbUtils框架、分页】
1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的... 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接 ...
- sublime插件AndyJS2安装教程
1.下载AndyJS2包,已整理上传,下载AndyJS2.rar,附上网址.(https://github.com/jiaoxueyan/AndyJS2) 2.点击首选项(preference)=&g ...
- php与web页面交互(二)
一.获取表单数据 1.1 使用POST()方法提交表单 ---POST()方法可以没有限制地传递数据到服务器,所提交的数据在后台传输,用户在浏览器端是看不到这一过程的,安全性高,适用于发送保密数据和 ...
- LeetCode - 185. Department Top Three Salaries
The Employee table holds all employees. Every employee has an Id, and there is also a column for the ...
- php扩展开发实战教程(1)
我的开发环境: Ubuntu16.04 apt方式安装的php5.6, apache,mysql等 由于我的本机用的是apt方式安装的php,所以我这里从头开始用最精简的方式,编译安装一个php5.4 ...
- install atom markdown preview plus error
Installing "markdown-preview-enhanced@0.15.2" failed.Hide output- npm ERR! Darwin 17.2.0 n ...
- MarkDown思考
前言 使用MarkDown有一段时间了,感觉的确很方便.大大提高了工作效率,并带来了良好的工作体验.但是,一直以来我都有一个困惑,就是MarkDown的插件和编辑器纷繁无比,却通常各自有一套自己的实现 ...