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的更多相关文章

  1. springmvc与freemarker的整合

    官方简介:FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具. 它不是面向最终用户的,而是一个Java ...

  2. 一文读懂四种常见的XML解析技术

    之前的文章我们讲解了<XML系列教程之Schema技术_上海尚学堂java培训技术干货><XML的概念.特点与作用.XML申明_上海Java培训技术干货>,大家可以点击回顾一下 ...

  3. Freemarker教程1(基本使用)

    简介 FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是 ...

  4. @ConfigurationProperties 注解使用

    @ConfigurationProperties 注解使用 依赖和文件 <dependency> <groupId>org.springframework.boot</g ...

随机推荐

  1. HTTP基础概念讲解

    HTTP基础概念讲解 作者:Danbo 时间:2016-03-17 1.1.http协议头部:curl -I www.meituan.com 1.2.静态和动态 静态网页:纯HTML格式的网页,后台没 ...

  2. 【leetcode刷题笔记】Permutations II

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  3. python3 内置常用函数系列一

    python3 内置了一系列的常用函数, python英文官方文档详细说明:点击查看, 为了方便查看,将内置常用的函数的记录一下来. Python3版本所有的内置函数: 1.abs() print(a ...

  4. CSS3环形动画菜单

    在线演示 本地下载

  5. alpine安装更新

    apk search libaio apk add make cmake libaio-dev libffi-dev glib-dev glib

  6. Ansible playbook练习

    示例1:创建用户的Playbook --- - name: create user hosts: openstack gather_facts: false tasks: - name: create ...

  7. 阻挡ddos攻击的函数

  8. 总结最近写的h5项目

    其实最近最大的感触就是真正独立完结一个项目的人学到的东西是最多,但并不意味着自己已全部吸收,还是得消化消化 最近做了一个移动端的h5页面,感兴趣的可以访问看一看:http://app.500jia.c ...

  9. 基于js的网页换肤(不需要刷新整个页面,只需替换css文件)

    1. [代码][JS]代码    <HTML><HEAD><link ID="skin" rel="stylesheet" typ ...

  10. Codeforces 163A Substring and Subsequence:dp【子串与子序列匹配】

    题目链接:http://codeforces.com/problemset/problem/163/A 题意: 给你两个字符串a,b,问你有多少对"(a的子串,b的子序列)"可以匹 ...