Java Freemarker 模板
Freemarker 是一款用于生成动态模板的 Java 模板引擎。它使用简单且功能强大,广泛应用于 Java Web 开发中。本文将介绍 Freemarker 的基本概念、使用方法和示例代码。
Freemarker 概述
Freemarker 是一种基于模板的生成技术,它通过在模板中插入变量和逻辑控制语句,动态生成最终的文本输出。
Freemarker 的模板使用一种类似于 HTML 的语法,其中包含了占位符、条件判断、循环等功能。通过将模板和数据进行结合,可以生成各种动态内容,如网页、邮件、报表等。
安装和配置
要使用 Freemarker,首先需要将 Freemarker 的 JAR 文件添加到 Java 项目的依赖中。可通过 Maven 或手动下载 JAR 文件的方式添加依赖。
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
在项目中引入 Freemarker 后,需要进行简单的配置,告诉 Freemarker 模板的位置和一些其他属性。可以使用 Configuration
类进行配置。
Configuration configuration = new Configuration(Configuration.VERSION_2_3_31);
configuration.setDirectoryForTemplateLoading(new File("templates"));
configuration.setDefaultEncoding("UTF-8");
以上代码指定了模板文件的位置为 "templates" 文件夹,并设置默认编码为 UTF-8。
模板语法
Freemarker 的模板语法包括以下几个关键元素:
- 变量输出:通过
${}
语法可以在模板中输出变量的值。
Welcome, ${name}!
- 条件判断:使用
<#if>
和<#else>
可以进行条件判断。
<#if age >= 18>
<p>You are an adult.</p>
<#else>
<p>You are a minor.</p>
</#if>
- 循环:使用
<#list>
可以进行循环操作。
<ul>
<#list items as item>
<li>${item}</li>
</#list>
</ul>
- 宏定义:可以使用
<#macro>
定义宏,在模板中进行复用。
<#macro welcomeMessage name>
Welcome, ${name}!
</#macro>
<@welcomeMessage name="John" />
更多模板语法的详细使用方法可以参考 Freemarker 的官方文档。
使用示例
下面是一个简单的示例,演示了如何使用 Freemarker 生成一个 HTML 页面。
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"));
configuration.setDefaultEncoding("UTF-8");
Template template = configuration.getTemplate("example.ftl");
Map<String, Object> data = new HashMap<>();
data.put("title", "Hello, Freemarker!");
data.put("name", "John");
data.put("age", 25);
List<String> items = Arrays.asList("Item 1", "Item 2", "Item 3");
data.put("items", items);
StringWriter writer = new StringWriter();
template.process(data, writer);
System.out.println(writer.toString());
}
}
<!DOCTYPE html>
<html>
<head>
<title>${title}</title>
</head>
<body>
${title}
<p>Welcome, ${name}!</p>
<#if age >= 18>
<p>You are an adult.</p>
<#else>
<p>You are a minor.</p>
</#if>
<ul>
<#list items as item>
<li>${item}</li>
</#list>
</ul>
</body>
</html>
以上示例中,example.ftl
是一个 Freemarker 模板文件,代码中的数据会填充到模板中,并通过 process
方法生成最终的 HTML 页面。
结论
Freemarker 是一款强大而灵活的 Java 模板引擎,可以用于生成各种动态内容。本文介绍了