freemark简单事例
工作准备:开发环境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简单事例相关推荐
- 深度学习库 trax 简单事例Trax Quick Intro
Google 的深度学习库Trax,其简版教程(Trax Quick Intro)需要通过翻墙才能看,这次当个搬运工,这是一个关于transformer训练和预测的简要介绍: 导入包: ! pip i ...
- springMVC 简单事例
本帖最后由 悲观主义者一枚 于 2015-1-31 17:55 编辑 使用SpringMvc开发Android WebService入门教程 1.首先大家先创建一个JavaWeb项目 2.然后加入Sp ...
- Java爬虫更新mysql数据库(简单事例)
http://webmagic.io/docs/zh/posts/ch4-basic-page-processor/selectable.html webmagic官网文档解释 所需jar包: 以及w ...
- android 较高版本,页面分割线实现LinearLayoutCompat布局简单事例
转载请注明出处:王亟亟的大牛之路 以前,我们如果要对一个界面切割,分成各个部分可能需要画好多个Layout然后include进来或者用个什么空白的ImageView去填充.V7包中有了一个更简便的实现 ...
- 关于html各个功能的简单事例
<html> <head> <title>第一个Html文档</title> </head> <body bgcolor=" ...
- java集成ogre_ogre3d环境配置 SDK安装配置及简单事例教程
SDK安装以及编译 1.下载SDK,地址如下:http://www.ogre3d.org/download/sdk 2.安装SDK,直接解压到相应目录,如D:/ogreSDK 3.我用的是1.8版本, ...
- Prism安装、MVVM基础概念及一个简单的样例
一:Prism的下载和安装 1:在http://compositewpf.codeplex.com/上下载最新的包. 下载完毕后,运行之,选择解压目录解压之.解压完毕的根目录下有chm帮助文档. 2: ...
- MapKit 以及大头针的简单使用
给一个简单事例注释很详细了应该不许要过多的解释了 // // ViewController.m // 2014_11_03_大头针的使用 // // Created by Mac10.9 on 14- ...
- 响应式编程以及反应式编程框架Reactor3的简单介绍
前言 Reactor 3是一个围绕Reactive Streams规范构建的库,它在JVM上引入了响应式编程的一个范例.目前Spring5 引入的Webflux就是reactor 3实现的一个响应式w ...
最新文章
- centos7 firewall 防火墙 命令
- JavaScript知识总结
- WIN8配置IIS8.0+PHP+Mysql+Zend
- htmlparser解析网站时服务器返回的文件编码和页面编码不一致问题
- Java线程简单总结
- java和C++的区别
- html5网页制作图文混排,03第3章制作图文混排网页.docx
- python2 urllib2_python2.7 urllib和urllib2
- 【Java多线程系列七】ExecutorService
- ps一点等于多少厘米_请问PS中“像素”和“厘米”是肿么换算的?
- 虚拟机canal-deployer连接主机mysql失败
- 为什么说社群团购时代来临了?
- python在数据分析方面的应用-数据分析应用方面Python和spss有什么区别?
- Oracle:错误码ORA-28040 的坑
- web前端工程师都做什么工作
- 企业域名是什么?域名代表网站流量
- java ocx调用_Java调用ocx控件以及dll
- 计算机无法读取内存,电脑内存条无法识别,真正的原因在这里
- 5.15 vs2019 静态编译_Go Web 开发如何优雅的包含静态资源文件?
- [转]中国最大的Webshell后门箱子调查,所有公开大马全军覆没
热门文章
- mysql空表不导出问题_解决Oracle 11g空表无法导出的问题
- js实现模态框点击空白关闭
- bootstrap-fileinput 添加打印按钮
- java lists 引用包,在线等java【不在同一类,同一个包的两个LIst可以实现复制么?怎...
- java cmd copy_使用Java中的cmd复制文件的问题
- 用力和应变片计算弹性模量_第4章 力学量传感器.pptx
- vnr光学识别怎么打开_水晶光电:光学元件需求向好,光学创新打开成长新空间,未来可期...
- 高二下学期计算机考试试题及答案,福建省泉州市第五高级中学校2020-2021学年高二下学期期中考试数学试题含答案.docx...
- vue从其它页面返回_vue---详细页点返回列表页,停留在原先位置
- getprivateprofilestring读不到数据_从零到千万用户,我是如何一步步优化MySQL数据库的?...