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. 3.07课·········if分支语句

    语句分类:顺序语句,选择语句(分支语句),循环语句 分支语句:(一)if(表达式) //表达式返回值是True或False{}说明:1.表达式返回的是bool值:2.小括号和花括号后面不需要加分号. ...

  2. c的详细学习(9)结构体与共用体的学习(一)

    C语言提供了另外两种构造类型:结构体与公用体,用来存储若干个类型不同但彼此组成一个集合的数据总体. (1)结构体类型与结构体变量 1.定义 其一般形式为: struct  结构体类型名{ 数据类型1 ...

  3. flask初次搭建rest服务笔记

    官网中有用的记录一下,太多只是记录了最简单的官网docs:http://flask.pocoo.org/docs/0.12/ 跑起来一个程序 $ export FLASK_APP=hello.py $ ...

  4. 20145229吴姗珊 《Java程序设计》第4周学习总结

    20145229吴姗珊 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 继承与多态 6.1继承共同行为 1.继承基本上就是避免多个类间重复定义共同行为 简单的类的定义 使用s ...

  5. <Perl算法小菜>排序加速--Schwatzian变换及Guttman-Rosler变换

    原创博客,转载请联系博主! perl里的数据都是以双精度为单元存储的,也就是相当于C/Cpp中的double型,而正则的解析是由perl内置的正则引擎完成的,那么除了重写一个属于自己的排序方法之外,我 ...

  6. 在macOS上使用***

    写在教程之前[转] 本教程是通用的***在macOS上的使用教程.同时作为FzVPN的设备教程补充之一,适用于macOS. 若您在使用FzVPN,请在阅读前先仔细阅读FzVPN的使用帮助:>传送 ...

  7. retry.RetryInvocationHandler (RetryInvocationHandler.java:invoke(140)) - Exception while invoking getFileInfo of class ClientNamenodeProtocolTranslatorPB over bdata236/192.168.1.236:9000 after 3 fail

    报错信息如下 -- ::, INFO [main]: retry.RetryInvocationHandler (RetryInvocationHandler.java:invoke()) - Exc ...

  8. 大话设计模式--观察者模式 Observer -- C++ 实现实例

    大话设计模式--1.观察者模式: 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有的 观察者对象,使他们能够自动更新自己. 使用场合: 当一 ...

  9. Servlet的过滤器(Fliter)

    Servlet过滤器与Servlet十分相似,但具有拦截客户端(浏览器)请求的功能,可以改变请求中的内容来满足实际开发的需求.对于开发人员而言,过滤器实质就是在Web应用服务器上的一个Web应用组件, ...

  10. eclipse导入jar包连接mysql

    Eclipse中导入 mysql--conncetor --java--jars  方法一:在工程项上右击,点Build Path->Configure Build Path-->Libr ...