Spring Boot引入FreeMarker用于文本替换

Spring Boot引入FreeMarker用于文本替换

什么是 FreeMarker?

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

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

overview.png

Figure

这种方式通常被称为 MVC (模型 视图 控制器) 模式,对于动态网页来说,是一种特别流行的模式。 它帮助从开发人员(Java 程序员)中分离出网页设计师(HTML设计师)。设计师无需面对模板中的复杂逻辑, 在没有程序员来修改或重新编译代码时,也可以修改页面的样式。

而FreeMarker最初的设计,是被用来在MVC模式的Web开发框架中生成HTML页面的,它没有被绑定到 Servlet或HTML或任意Web相关的东西上。它也可以用于非Web应用环境中。

FreeMarker 是 免费的, 基于Apache许可证2.0版本发布。

--------------------------摘抄自【freemarker.foofun.cn】

使用

1.引入依赖

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.32</version>
</dependency>

2.代码中使用

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.extern.log4j.Log4j2;

import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Wei.Li
 */
@Log4j2
public class Test {
    public static void main(String[] args) {
        try (StringWriter out = new StringWriter()) {
            Map<String, Object> model = new HashMap<>();
            model.put("name", "子山");
            model.put("six", "男");
            model.put("age", "27");
            String resultTemplate = "测试模板\n名称:${name}\n性别:${six}\n年龄:${age}";
            Configuration configuration = new Configuration(Configuration.VERSION_2_3_32);
            Template template = new Template("resultTemplate", resultTemplate, configuration);
            template.process(model, out);
            String resultTemplateData = out.toString();
            log.info(resultTemplateData);
        } catch (TemplateException e) {
            log.error("{} 设置有误,请检查", e.getBlamedExpressionString());
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.查看输出

09:45:09.577 [main] INFO com.*.*.Test - 测试模板
名称:子山
性别:男
年龄:27

FreeMarker文档

http://freemarker.foofun.cn

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×