首先简单介绍下FreeMarker
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。
FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。
如下图:
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件。
FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境。
FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库
FreeMarker能够生成各种文本:HTML、XML、RTF、Java源代码等等
易于嵌入到你的产品中:轻量级;不需要Servlet环境
插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等。
下面直接来写代码吧
1, 首先需要引入 freemarker.jar 包文件 [ 点击下载]
2, 在项目中创建一个目录存放FreeMarker模板文件
( 如: 我这里在项目下 创建一个名为 templates 的目录)
3,在templates目录下,建立 fmdemo.ftl 模板文件,内容如下:
(如下的 ${user} 就是动态加载的变量)
你好啊,${user},今天你的精神不错!
4,下面写个java类,内容在控制台输出,内容如下:
package demo;
import java.io.File;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
/**
* @author ZhouMengShun
*/
public class FreeMarkerDemo {
public static void main(String[] args) throws Exception {
//创建FreeMarker配置实例
Configuration cfg = new Configuration();
//如下templates是 freemarker模板存放的目录,这里写的是相对路径
cfg.setDirectoryForTemplateLoading(new File("templates"));
Map root = new HashMap<>();//创建数据模型
root.put("user", "周梦顺"); //设置user的值
//加载模板文件 fmdemo.ftl
Template t1 = cfg.getTemplate("fmdemo.ftl");
//显示生成的数据,将合并后的数据打印到控制台
Writer out = new OutputStreamWriter(System.out);
t1.process(root, out);
out.flush();
//显示生成的数据,将合并后的数据直接返回成字符串!
/* StringWriter out2 = new StringWriter();
t1.process(root, out);
out2.flush();
String temp = out2.toString();
System.out.println(temp);*/
}
}
如下是我的项目结构图
下面我将结果贴出来
如上图,模板中的${user} 已被替换成了实际的值,
通过这个案例我们可以联想到,如果将这个写成一个html模板,然后写入页面中。
要明白的是FreeMarker能够生成各种文本:HTML、XML、RTF、Java源代码等等。