简介
FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写,FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序,虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由FreeMarker 生成页面,通过模板显示准备的数据
FreeMarker 不是一个 Web 应用框架,而适合作为 Web 应用框架一个组件。FreeMarker 与容器无关,因为它并不知道 HTTP 或 Servlet;FreeMarker 同样可以应用于非Web应用程序环境,FreeMarker 更适合作为 Model2 框架(如 Struts)的视图组件,你也可以在模板中使用 JSP标记库。另外,FreeMarker是免费的。
应用场景
比较适合运用在访问量大(或页面数据量大),但是数据很少与后台进行交互(即对实时性要求不是很高的)的页面,比如商品网站上的商品详情页等。
Quick Start
新建maven工程freemarker-learning-project
添加 freemarker依赖组件
目录结构如下
新建HelloWorldFreeMarker.java hello_world.tpl
HelloWorldFreeMarker.java
package com.learning.my.hello_world;
import freemarker.template.Configuration;
import freemarker.template.Template;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
public class HelloWorldFreeMarker {
public static void main(String[] args) throws Exception {
//指定模板仓库路径
String tpl_dir="D:\\WorkSpace\\freemarker-learning-project\\src\\main\\resources\\tpl_repo";
//指定输出路径 如果路径不存在自己手动创建
String out_dir = "D:\\out";
Configuration conf = new Configuration();
//加载模板文件(模板的路径)
conf.setDirectoryForTemplateLoading(new File(tpl_dir));
// 加载模板
Template template = conf.getTemplate("/hello_world.tpl");
// 定义数据
Map root = new HashMap();
root.put("world", "Hello World");
// 定义输出
Writer out = new FileWriter(out_dir + "/freemarker.html");
template.process(root, out);
System.out.println("转换成功");
out.flush();
out.close();
}
}
hello_world.tpl
${world}!!
执行HelloWorldFreeMarker
freemarker 中文手册 http://freemarker.foofun.cn/index.html