freemark简单事例
工作准备:开发环境myeclipse
freemarker.jar(需要下载)
首先引入freemarker.jar包。然后,,,,直接贴代码:
1.创建一个FreemarkerUtil类:
package com; import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map; import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException; public class FreemarkerUtil { /*
* 获取ftl模版
*/
public Template getTemplate(String name) {
try {
// 通过Freemarker的Configuration读相应的flt
Configuration cfg = new Configuration();
// 设定去哪里读flt模板文件
cfg.setClassForTemplateLoading(this.getClass(), "/ftl");
// 在模板文件目录中找到名称为name的文件
Template template = cfg.getTemplate(name);
return template; } catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
} /*
* 控制后台输出
*/
public void print(String name, Map<String, Object> root) {
try {
// 通过template可以将模版文件输入到相应的流
Template template = this.getTemplate(name);
template.process(root, new PrintWriter(System.out));
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} /*
* 输出HTML name 是ftl模版的名称 root 页面对象。 outFile是输出文件名称。
*/
public void fpring(String name, Map<String, Object> root, String outFile) {
FileWriter out = null;
try {
// 通过一个文件输出流,就可以写到相应的文件中,此处是绝对路径
out = new FileWriter(new File(
"D:/workspace/FreeMarker/WebRoot/WEB-INF/jsp/html/"
+ outFile));
Template template = this.getTemplate(name);
template.process(root, out);
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
} catch (TemplateException e) {
// TODO: handle exception
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
} }
2.创建Group类
package com;
public class Group {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3.创建User类
package com;
import java.io.Serializable;
public class User implements Serializable {
private int id;
private String name;
private int age;
private Group group;
public User() {
}
public User(int id, String name, int age, Group group) {
this.id = id;
this.name = name;
this.age = age;
this.group = group;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
}
4.创建ftl文件。具体步骤new->file->01.ftl
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试</title>
</head> <body>
<h1>你好${user.name}</h1>
</body>
</html>
5.JUnit测试,我们需要选择的是测试用例。
package com; import java.util.HashMap;
import java.util.Map; import org.junit.Test; public class FreemarkerUtilTest { @Test
public void test() {
FreemarkerUtil util = new FreemarkerUtil();
Map<String, Object> map = new HashMap<String, Object>(); Group group = new Group();
group.setName("IT"); User user = new User();
user.setId(001);
user.setName("张三");
user.setAge(12);
user.setGroup(group);
/*
* List<User> users = new ArrayList<User>(); users.add(user);
* users.add(user); users.add(user);
*/
map.put("user", user);
util.print("01.ftl", map);
util.fpring("01.ftl", map, "01.html");
}
}
控制台输出:

网页生成:

最后贴上我的项目布局。。。

经验来自:http://www.cnblogs.com/linjiqin/p/3387972.html
freemark简单事例的更多相关文章
- ogre3d环境配置 SDK安装配置及简单事例教程
ogre3d环境配置 SDK安装配置及简单事例教程 http://www.cr173.com/html/22594_1.html ogre3d环境配置 SDK安装配置及简单事例教程 http://ww ...
- c#创建、安装、卸载、调试windows服务的简单事例
最近工作中用到了windows服务,对其有深刻理解和丰富经验谈不上,本篇文章只是简单陈诉用c#创建.安装.卸载.调试windows服务的步骤. 一.创建windows服务 1.用VS创建windows ...
- 拖动div简单事例代码
事例文件下载 //拖动容器代码 var rDrag = { o: null, init: function (o) { o.onmousedown = this.start; }, start: fu ...
- springMVC 简单事例
本帖最后由 悲观主义者一枚 于 2015-1-31 17:55 编辑 使用SpringMvc开发Android WebService入门教程1.首先大家先创建一个JavaWeb项目2.然后加入Spri ...
- C# Asp.net Quartz.NET作业调度之创建、安装、卸载、调试windows服务的简单事例
一.创建windows服务 1.用VS创建windows服务,结果如下: 2.删除默认生成的Service1.cs文件,然后创建自己的服务文件(如:MyService),并修改Program.cs文件 ...
- Django安装与简单事例-02
Django的下载与基本命令 1.下载Django: 1 pip3 install django 2.创建一个django project 1 django-admin.py startproject ...
- django1.4 简单事例 ,根目录下templates
django发展很快,但是有的是用的老版本,比如我现在看到一个项目,它用的是 Django1.4,而且app不是创建在了项目的根目录下,这样,它的Setting中设置就会不一样,若是设置错误,就会找不 ...
- Xamarin + MvvmCross 简单事例 Part 2
MvvmCross 说起MvvmCross,要先说到Mvvm,Mvvm是Mvc框架的一种变形.对应的分别为Model.View和ViewModel层.三层之间的关系是这样的: Model层为数据层,实 ...
- CSS3中的动画效果记录
今天要记录的是CSS3中的三种属性transform.transition以及animation,这三个属性大大提升了css处理动画的能力. 一.Transform 变形 CSS中transform ...
随机推荐
- BZOJ1791[Ioi2008]Island 岛屿 ——基环森林直径和+单调队列优化DP+树形DP
题目描述 你将要游览一个有N个岛屿的公园.从每一个岛i出发,只建造一座桥.桥的长度以Li表示.公园内总共有N座桥.尽管每座桥由一个岛连到另一个岛,但每座桥均可以双向行走.同时,每一对这样的岛屿,都有一 ...
- json_encode转化为数组时带下标
//错误 data[$i]=[date("y-m-d H:i:s"),数据查询] //正确 data[]=[date("y-m-d H:i:s"),数据查询] ...
- UVA-1572
解题思路: 之前看到的骚操作,主要思想就是把两个面合在一起看成两个点相连,最后只要找到一个环就可以无限克隆这个环使得无限延迟. 把符号变成数字如A-变为0,A+变为1,则0^1=1 ,这两个符号可以通 ...
- Codeforces Round #420 (Div. 2) A,B,C
A. Okabe and Future Gadget Laboratory time limit per test 2 seconds memory limit per test 256 megaby ...
- 自学Linux Shell13.2-选项处理(主要getopt、getopts命令)
点击返回 自学Linux命令行与Shell脚本之路 Bash shell提供了一些不同的方法来从用户处获得数据,包括以下3中方法: 命令行参数(添加在名利后面的数据) 命令行选项(可修改命令行为的单个 ...
- SpringBoot集成RocketMQ
实战,用案例来说话 前面已经说了JMS和RocketMQ一些概念和安装,下面使用SpringBoot来亲身操作一下. 生产者的操作 SpringBoot项目创建完成,引入依赖是第一步: <dep ...
- JS数组冒泡排序&去重
冒泡排序: var a = [2,1,4,3,6,5]; for(var d = 0 ; d< a.length; d++){ for(var b = d+1; b < a.length; ...
- 前端基础之html(一)
https://www.cnblogs.com/haiyan123/p/7516060.html 一.初始html 1.web服务本质 import socket sock=socket.socket ...
- mock.js的使用
安装 npm install mockjs 使用 const Mock = require("mockjs") //格式"属性名|min-max": " ...
- 采集化工内容写入TXT文本
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...