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 ...
随机推荐
- c/c++ 输入输出技巧
C: 小数的四舍五入问题 小数用 %.xf 输出的话 是会自动四舍五入的 比如说 double e = 2.718, c = 3.141; printf("%.2lf\n", e) ...
- Effective java -- 8 异常
第五十七条:只针对异常的情况才使用异常应该都有这个意识吧,就像什么抓索引越界什么的,没有必要. 第五十八条:对可恢复情况使用受检查异常,对编程错误使用运行时异常三种可抛的异常:受检的异常(checke ...
- 回忆基础:制作plist文件
-(void)creatPlistFileWithArr:(NSArray *)array{ //将字典保存到document文件->获取appdocument路径 NSString *docP ...
- 左侧图片 右侧块的实现方法---解决3像素bug的一种解决方案,不用浮动用绝对定位和margin-left
google的实现方式是: <div class="mw"> <a href="/" id="mlogo"> &l ...
- mac工作软件推荐-iterm + zsh + tmux
原文链接: http://ju.outofmemory.cn/entry/57244 tmux安装https://blog.csdn.net/nmgzywd/article/details/50915 ...
- 尴尬,qt出现错误,然后莫名又好了..
Starting D:\code\qt\myChess\day01\build-HelloQT-Desktop_Qt_5_5_0_MinGW_32bit-Debug\debug\HelloQT.exe ...
- 重拾安卓_01_安卓开发环境搭建(eclipse)
一.下载安装Android SDK 1.下载地址 (1)官网(可FQ选择):http://developer.android.com/sdk/index.html (2)不可FQ选择:http://w ...
- Javascript-- jQuery事件篇(2)
jQuery表单事件之blur与focus事件 单处理事件focusin事件与focusout事件,同样用于处理表单焦点的事件还有blur与focus事件 它们之间的本质区别: 是否支持冒泡处理 举个 ...
- mysql字符串的隐式转换导致查询异常
如果mysql某个字段(name)类型为varchar, 加了索引,在执行where查询的时候,传入了int的值,这样就会全表扫描,把每一条的值都转换成int(会出现"中国"-&g ...
- QListWidget拖放
setDragEnabled() 允许拖 setAcceptDrops()允许放 setDragDropMode(QAbstractItemView.DragDrop)设置拖拽模式 setSelect ...