• 【FreeMarker】FreeMarker快速入门(一)


    什么是 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、运行,结果如下:

        

  • 相关阅读:
    程序猿身边有个漂亮女程序媛~~~那是种什么样的体验?
    前端程序猿分九段,一段又一段,你是哪一段?
    10个屌炸天的设计网址导航带你嗨翻科技设计界 #精选前端开发设计素材
    人工智能一定高大上?盘点那些让人哭笑不得的人工智障 #精选黑科技人工智能
    javascript奇技淫巧之位运算符
    曾经的超级明星类库jQuery未来也许不再会被前端程序猿追捧了!
    谷歌为什么把上十亿行代码都放在一个仓库里
    全功能响应式模板:黑暗元素
    程序员的福音,AI可以自动修复bug了!
    机器学习原来如此有趣:如何故意欺骗神经网络
  • 原文地址:https://www.cnblogs.com/h--d/p/11232483.html
Copyright © 2020-2023  润新知