H__D  

什么是 FreeMarker

  FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

  模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是 像PHP那样成熟的编程语言。 那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。

   

FreeMarker使用

  1、新建一个Maven工程,引入依赖

1 <!-- freemarker -->
2 <dependency>
3     <groupId>org.freemarker</groupId>
4     <artifactId>freemarker</artifactId>
5     <version>2.3.28</version>
6 </dependency>

 

  2、在src/main/resources/templates目录下新建模板-test.ftl

<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome ${user}!</h1>
  <p>Our latest product:
  <a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>

 

  3、编辑测试类

 1 package com.test.freemarker;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 import java.io.OutputStreamWriter;
 6 import java.io.Writer;
 7 import java.util.HashMap;
 8 import java.util.Map;
 9 
10 import freemarker.template.Configuration;
11 import freemarker.template.Template;
12 import freemarker.template.TemplateExceptionHandler;
13 
14 public class Test {
15 
16     private static final String TEMPLATE_PATH = "src/main/resources/templates";
17 
18     public static void main(String[] args) throws IOException {
19         // step1 创建freeMarker配置实例
20         // 创建freeMarker配置实例
21         Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
22         // 获取模版路径
23         cfg.setDirectoryForTemplateLoading(new File(TEMPLATE_PATH));
24         // 设置默认编码格式
25         cfg.setDefaultEncoding("UTF-8");
26         // 设置异常处理器
27         cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
28         
29         Writer out = null;
30         try {
31             // step2  创建数据模型
32             Map root = new HashMap();
33             root.put("user", "Big Joe");
34             Map latest = new HashMap();
35             root.put("latestProduct", latest);
36             latest.put("url", "products/greenmouse.html");
37             latest.put("name", "green mouse");
38 
39             // step3  加载模版文件
40             Template temp = cfg.getTemplate("test.ftl");
41 
42             // step4  生成数据
43             out = new OutputStreamWriter(System.out);
44             temp.process(root, out);
45             
46         } catch (Exception e) {
47             e.printStackTrace();
48         } finally {
49             try {
50                 if (null != out) {
51                     out.flush();
52                 }
53             } catch (Exception e2) {
54                 e2.printStackTrace();
55             }
56         }
57     }
58 }

 

  4、运行,结果如下:

    

posted on 2019-07-23 16:14  H__D  阅读(726)  评论(0编辑  收藏  举报