Freemarker01
1 如何使用freemarker
1.1 导包
freemarker-2.3.19.jar
1.2 创建一个ftl文件作为模板
1.3 创建一个方法来将ftl模板和数据组合起来
2 利用maven实现freemarker编程
2.1 创建一个maven项目

2.2 利用maven导入freemarker包

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.xiangxu</groupId>
<artifactId>warriorTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.19</version>
</dependency>
</dependencies>
</project>
pom.xml
2.3 创建用于组装freemarker模板和数据的方法
2.3.1 创建freemarker配置实例并指定ftl模板文件的位置
2.3.2 创建数据模型并向数据模型中添加数据
2.3.3 利用freemarker对象加载模板文件
2.3.4 显示生成的数据
2.3.5 关闭输出流
public static void test01() throws Exception {
Configuration cfg = new Configuration(); // 创建freemarker配置实例
cfg.setDirectoryForTemplateLoading(new File("template")); // 指定配置文件的路径 // 包含ftl文件的文件夹在项目根目录下时的写法(使用相对路径)
// cfg.setDirectoryForTemplateLoading(new File("D://template")); // 使用绝对路径
// cfg.setClassForTemplateLoading(this.getClass(), "/template");//在resource目录下的写法类路径(这种方法在静态方法中不可用)
// 1、创建freemarker配置实例并指定ftl模板文件的位置
Map root = new HashMap(); // 创建数据模型
root.put("name", "Zeus"); // 向数据模型中添加数据
// 2、创建数据模型并向数据模型中添加数据
Template tl = cfg.getTemplate("a.ftl");
// 3、利用freemarker对象加载模板文件
Writer out = new OutputStreamWriter(System.out);// 输出控制 // 输出流到控制台(输出流到文件、输出流到socket怎么处理)
tl.process(root, out); // 将模板和数据组合的结果输出指定的输出位置
// 4、显示生成的数据
out.flush();
out.close();
// 5、关闭输出流
}
2.4 编写ftl模板文件
Hello ${name}
Welcom to the city of dazu
2.5 在main方法中调用
package cn.xiangxu.freemarker; import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map; import freemarker.template.Configuration;
import freemarker.template.Template; public class TestFreemarker { public static void main(String[] args) throws Exception {
test01();
} public static void test01() throws Exception {
Configuration cfg = new Configuration(); // 创建freemarker配置实例
cfg.setDirectoryForTemplateLoading(new File("template")); // 指定配置文件的路径 // 包含ftl文件的文件夹在项目根目录下时的写法(使用相对路径)
// cfg.setDirectoryForTemplateLoading(new File("D://template")); // 使用绝对路径
// cfg.setClassForTemplateLoading(this.getClass(), "/template");//在resource目录下的写法类路径(这种方法在静态方法中不可用)
// 1、创建freemarker配置实例并指定ftl模板文件的位置 Map root = new HashMap(); // 创建数据模型
root.put("name", "Zeus"); // 向数据模型中添加数据
// 2、创建数据模型并向数据模型中添加数据 Template tl = cfg.getTemplate("a.ftl");
// 3、利用freemarker对象加载模板文件 Writer out = new OutputStreamWriter(System.out);// 输出控制 // 输出流到控制台(输出流到文件、输出流到socket怎么处理)
tl.process(root, out); // 将模板和数据组合的结果输出指定的输出位置
// 4、显示生成的数据 out.flush();
out.close();
// 5、关闭输出流
}
}
2.6 控制台效果

2.7 项目文件目录

2.8 待优化点
freemarker的相关指令语法详解
怎么讲组合后的内容存储到一个文件中
利用freemarker实现sql语句的动态拼接
待更新......
2017年8月29日22:08:54
Freemarker01的更多相关文章
- springmvc与freemarker的整合
官方简介:FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具. 它不是面向最终用户的,而是一个Java ...
- 一文读懂四种常见的XML解析技术
之前的文章我们讲解了<XML系列教程之Schema技术_上海尚学堂java培训技术干货><XML的概念.特点与作用.XML申明_上海Java培训技术干货>,大家可以点击回顾一下 ...
- Freemarker教程1(基本使用)
简介 FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是 ...
- @ConfigurationProperties 注解使用
@ConfigurationProperties 注解使用 依赖和文件 <dependency> <groupId>org.springframework.boot</g ...
随机推荐
- 用linux搭建ranzhi环境
一.安装红帽6.5 1.安装时需选择桥接模式: 2.选择自定义,在设置中将镜像文件(ISO)选择进去: 3.安装时选择[桌面]安装(在/etc/inittab文件中,若id=5则为桌面模式,id=3为 ...
- 【leetcode刷题笔记】Binary Tree Inorder Traversal
Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tre ...
- P4455 [CQOI2018]社交网络(矩阵树定理)
题目 P4455 [CQOI2018]社交网络 \(CQOI\)的题都这么裸的吗?? 做法 有向图,指向叶子方向 \(D^{out}(G)-A(G)\) 至于证明嘛,反正也就四个定理,先挖个坑,省选后 ...
- 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据
相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...
- Storm bolt重复消费问题解决
最近碰到一个storm的坑, 两个bolt都需要从kafkaSpout中获取数据进行各自的业务处理, bolt1的处理是幂等的, bolt2的处理是非幂等的, 上线后发现非幂等的bolt处理总是会处理 ...
- MySQL中处理Null时要注意两大陷阱
MySQL数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段. ...
- Sqlte 知识点记录
1.表存在 select count(*) from sqlite_master where type='table' and name='MyTable'; sql),path ))"; ...
- (转)JSP九大内置对象
原文出处:http://www.importnew.com/19128.html 虽然现在基本上使用SpringMVC+AJAX进行开发了Java Web了,但是还是很有必要了解一下JSP的九大内置对 ...
- jQuery 参考手册 - 选择器
jQuery 选择器 选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") id="lastname" 的元 ...
- Convolutional Neural Networks for Visual Recognition 8
Convolutional Neural Networks (CNNs / ConvNets) 前面做了如此漫长的铺垫,现在终于来到了课程的重点.Convolutional Neural Networ ...