工作准备:开发环境myeclipse

     freemarker.jar(需要下载)

首先引入freemarker.jar包。然后,,,,直接贴代码:

1.创建一个FreemarkerUtil类:

 1 package com;
 2
 3 import java.io.File;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 import java.io.PrintWriter;
 7 import java.util.Map;
 8
 9 import freemarker.template.Configuration;
10 import freemarker.template.Template;
11 import freemarker.template.TemplateException;
12
13 public class FreemarkerUtil {
14
15     /*
16      * 获取ftl模版
17      */
18     public Template getTemplate(String name) {
19         try {
20             // 通过Freemarker的Configuration读相应的flt
21             Configuration cfg = new Configuration();
22             // 设定去哪里读flt模板文件
23             cfg.setClassForTemplateLoading(this.getClass(), "/ftl");
24             // 在模板文件目录中找到名称为name的文件
25             Template template = cfg.getTemplate(name);
26             return template;
27
28         } catch (IOException e) {
29             // TODO: handle exception
30             e.printStackTrace();
31         }
32         return null;
33     }
34
35     /*
36      * 控制后台输出
37      */
38     public void print(String name, Map<String, Object> root) {
39         try {
40             // 通过template可以将模版文件输入到相应的流
41             Template template = this.getTemplate(name);
42             template.process(root, new PrintWriter(System.out));
43         } catch (TemplateException e) {
44             e.printStackTrace();
45         } catch (IOException e) {
46             e.printStackTrace();
47         }
48     }
49
50     /*
51      * 输出HTML name 是ftl模版的名称 root 页面对象。 outFile是输出文件名称。
52      */
53     public void fpring(String name, Map<String, Object> root, String outFile) {
54         FileWriter out = null;
55         try {
56             // 通过一个文件输出流,就可以写到相应的文件中,此处是绝对路径
57             out = new FileWriter(new File(
58                     "D:/workspace/FreeMarker/WebRoot/WEB-INF/jsp/html/"
59                             + outFile));
60             Template template = this.getTemplate(name);
61             template.process(root, out);
62         } catch (IOException e) {
63             // TODO: handle exception
64             e.printStackTrace();
65         } catch (TemplateException e) {
66             // TODO: handle exception
67             e.printStackTrace();
68         } finally {
69             try {
70                 if (out != null) {
71                     out.close();
72                 }
73             } catch (IOException e) {
74                 // TODO: handle exception
75                 e.printStackTrace();
76             }
77         }
78     }
79
80 }

2.创建Group类

 1 package com;
 2
 3 public class Group {
 4
 5     private String name;
 6
 7     public String getName() {
 8         return name;
 9     }
10
11     public void setName(String name) {
12         this.name = name;
13     }
14
15 }

3.创建User类

 1 package com;
 2
 3 import java.io.Serializable;
 4
 5 public class User implements Serializable {
 6     private int id;
 7     private String name;
 8     private int age;
 9     private Group group;
10
11     public User() {
12     }
13
14     public User(int id, String name, int age, Group group) {
15         this.id = id;
16         this.name = name;
17         this.age = age;
18         this.group = group;
19     }
20
21     public int getId() {
22         return id;
23     }
24
25     public void setId(int id) {
26         this.id = id;
27     }
28
29     public String getName() {
30         return name;
31     }
32
33     public void setName(String name) {
34         this.name = name;
35     }
36
37     public int getAge() {
38         return age;
39     }
40
41     public void setAge(int age) {
42         this.age = age;
43     }
44
45     public Group getGroup() {
46         return group;
47     }
48
49     public void setGroup(Group group) {
50         this.group = group;
51     }
52
53 }

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 {@Testpublic 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

转载于:https://www.cnblogs.com/pengpengzhang/p/freemarker.html

freemark简单事例相关推荐

  1. 深度学习库 trax 简单事例Trax Quick Intro

    Google 的深度学习库Trax,其简版教程(Trax Quick Intro)需要通过翻墙才能看,这次当个搬运工,这是一个关于transformer训练和预测的简要介绍: 导入包: ! pip i ...

  2. springMVC 简单事例

    本帖最后由 悲观主义者一枚 于 2015-1-31 17:55 编辑 使用SpringMvc开发Android WebService入门教程 1.首先大家先创建一个JavaWeb项目 2.然后加入Sp ...

  3. Java爬虫更新mysql数据库(简单事例)

    http://webmagic.io/docs/zh/posts/ch4-basic-page-processor/selectable.html webmagic官网文档解释 所需jar包: 以及w ...

  4. android 较高版本,页面分割线实现LinearLayoutCompat布局简单事例

    转载请注明出处:王亟亟的大牛之路 以前,我们如果要对一个界面切割,分成各个部分可能需要画好多个Layout然后include进来或者用个什么空白的ImageView去填充.V7包中有了一个更简便的实现 ...

  5. 关于html各个功能的简单事例

    <html> <head> <title>第一个Html文档</title> </head> <body bgcolor=" ...

  6. java集成ogre_ogre3d环境配置 SDK安装配置及简单事例教程

    SDK安装以及编译 1.下载SDK,地址如下:http://www.ogre3d.org/download/sdk 2.安装SDK,直接解压到相应目录,如D:/ogreSDK 3.我用的是1.8版本, ...

  7. Prism安装、MVVM基础概念及一个简单的样例

    一:Prism的下载和安装 1:在http://compositewpf.codeplex.com/上下载最新的包. 下载完毕后,运行之,选择解压目录解压之.解压完毕的根目录下有chm帮助文档. 2: ...

  8. MapKit 以及大头针的简单使用

    给一个简单事例注释很详细了应该不许要过多的解释了 // // ViewController.m // 2014_11_03_大头针的使用 // // Created by Mac10.9 on 14- ...

  9. 响应式编程以及反应式编程框架Reactor3的简单介绍

    前言 Reactor 3是一个围绕Reactive Streams规范构建的库,它在JVM上引入了响应式编程的一个范例.目前Spring5 引入的Webflux就是reactor 3实现的一个响应式w ...

最新文章

  1. centos7 firewall 防火墙 命令
  2. JavaScript知识总结
  3. WIN8配置IIS8.0+PHP+Mysql+Zend
  4. htmlparser解析网站时服务器返回的文件编码和页面编码不一致问题
  5. Java线程简单总结
  6. java和C++的区别
  7. html5网页制作图文混排,03第3章制作图文混排网页.docx
  8. python2 urllib2_python2.7 urllib和urllib2
  9. 【Java多线程系列七】ExecutorService
  10. ps一点等于多少厘米_请问PS中“像素”和“厘米”是肿么换算的?
  11. 虚拟机canal-deployer连接主机mysql失败
  12. 为什么说社群团购时代来临了?
  13. python在数据分析方面的应用-数据分析应用方面Python和spss有什么区别?
  14. Oracle:错误码ORA-28040 的坑
  15. web前端工程师都做什么工作
  16. 企业域名是什么?域名代表网站流量
  17. java ocx调用_Java调用ocx控件以及dll
  18. 计算机无法读取内存,电脑内存条无法识别,真正的原因在这里
  19. 5.15 vs2019 静态编译_Go Web 开发如何优雅的包含静态资源文件?
  20. [转]中国最大的Webshell后门箱子调查,所有公开大马全军覆没

热门文章

  1. mysql空表不导出问题_解决Oracle 11g空表无法导出的问题
  2. js实现模态框点击空白关闭
  3. bootstrap-fileinput 添加打印按钮
  4. java lists 引用包,在线等java【不在同一类,同一个包的两个LIst可以实现复制么?怎...
  5. java cmd copy_使用Java中的cmd复制文件的问题
  6. 用力和应变片计算弹性模量_第4章 力学量传感器.pptx
  7. vnr光学识别怎么打开_水晶光电:光学元件需求向好,光学创新打开成长新空间,未来可期...
  8. 高二下学期计算机考试试题及答案,福建省泉州市第五高级中学校2020-2021学年高二下学期期中考试数学试题含答案.docx...
  9. vue从其它页面返回_vue---详细页点返回列表页,停留在原先位置
  10. getprivateprofilestring读不到数据_从零到千万用户,我是如何一步步优化MySQL数据库的?...