FreeMarker模板引擎快速入门

紫色玫瑰 2021-09-02 ⋅ 12 阅读

在Java开发中,经常需要生成动态的HTML页面。FreeMarker模板引擎是一种强大而灵活的工具,用于将数据和模板文件结合,生成所需的输出。

什么是FreeMarker?

FreeMarker是一个Java模板引擎,它基于模板和数据,可以生成各种文本格式的输出(HTML、XML、RTF等)。它使用一种被称为Java标记语言(JSP标签库的子集)的标记语法,使开发者能够将逻辑和动态数据插入到静态模板中。

快速入门

1. 添加FreeMarker依赖

首先,我们需要在项目的构建文件中添加FreeMarker的依赖。如果你使用Maven作为构建工具,可以在pom.xml中添加以下依赖项:

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

如果你使用Gradle,则可以在build.gradle中添加以下依赖项:

compile 'org.freemarker:freemarker:2.3.31'

2. 创建模板文件

接下来,我们需要创建一个Freemarker模板文件。该文件使用.ftl作为扩展名,例如example.ftl

在模板中,我们使用<#...>控制块标签来执行条件语句、循环和数据输出等操作。以下是一个简单的示例:

<html>
<head>
    <title>Welcome Page</title>
</head>
<body>
    <h1>Welcome, ${user}!</h1>
    <p>Today is ${date}</p>
</body>
</html>

3. 配置FreeMarker

在Java代码中,我们需要配置FreeMarker引擎并加载模板文件。以下是一个示例:

import freemarker.template.Configuration;
import freemarker.template.Template;

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

public class FreeMarkerExample {
    public static void main(String[] args) throws Exception {
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_31);
        configuration.setDirectoryForTemplateLoading(new File("templates")); // 设置模板文件目录

        Template template = configuration.getTemplate("example.ftl"); // 加载模板文件

        Map<String, Object> data = new HashMap<>(); // 设置模板数据
        data.put("user", "John Doe");
        data.put("date", "2021-01-01");

        StringWriter writer = new StringWriter();
        template.process(data, writer); // 将数据填充到模板中

        System.out.println(writer.toString()); // 输出生成的HTML
    }
}

4. 运行代码并生成HTML

运行上述Java代码,即可生成动态的HTML页面。输出结果如下:

<html>
<head>
    <title>Welcome Page</title>
</head>
<body>
    <h1>Welcome, John Doe!</h1>
    <p>Today is 2021-01-01</p>
</body>
</html>

总结

FreeMarker模板引擎是一个功能强大且易于使用的工具,用于生成各种文本格式的输出。它可以方便地将数据和模板结合,生成动态的HTML页面。通过上述快速入门,您已经了解了如何使用FreeMarker来开始构建你的Java应用。希望这篇博客对您有所帮助!


全部评论: 0

    我有话说: