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 ...
随机推荐
- day11 高阶函数 函数式编程
高阶函数,满足 接收函数作为参数或者返回有函数 函数可以当做参数传递给另一个函数 def foo(n): print(n) def bar(name): print("my name is ...
- MT【63】证明不是周期函数
证明$f(x)=sinx^2$不是周期函数. 反证:假设是周期函数,周期为$T,T>0$. $$f(0)=f(T)\Rightarrow sinT^2=0\Rightarrow T^2=k_1\ ...
- LOJ #6270. 数据结构板子题 (离线+树状数组)
题意 有 \(n\) 个区间,第 \(i\) 个区间是 \([l_i,r_i]\) ,它的长度是 \(r_i-l_i\) . 有 \(q\) 个询问,每个询问给定 \(L,R,K\) ,询问被 \([ ...
- Python向来以慢著称,为啥Instagram却唯独钟爱它?
PyCon 是全世界最大的以 Python 编程语言 为主题的技术大会,大会由 Python 社区组织,每年举办一次.在 Python 2017 上,Instagram 的工程师们带来了一个有关 Py ...
- Leetcode 70.爬楼梯 By Python
假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...
- 自学Zabbix2.5-客户端agentd安装过程
点击返回:自学Zabbix之路 ....
- 架构师成长之路6.2 DNS配置文件
点击返回架构师成长之路 架构师成长之路6.2 DNS 配置文件 /etc/hosts 主机的一个文件列表 ,添加记录如:111.13.100.92 www.baidu.com 对于简单的主机名解析 ...
- 【Luogu4719】动态dp
题面 洛谷 题解 等下发链接 代码: #include<iostream> #include<cstdio> #include<cstdlib> #include& ...
- 【学习笔记 边分树】【uoj400】【CTSC2018】暴力写挂
题目 描述 有两棵树\(T\)和\(T'\),节点个数都为\(n\),根节点都为\(1\)号节点; 求两两点之间 $$ \begin{align} depth(x) + depth(y) - ...
- C#基础 常用语&数据类型定义&类型转换
int temp = Console.Read(); Console.WriteLine(temp); Console.Read(); Console.Write(" ");直接 ...