Apache FreeMarker 使用教程
项目介绍
Apache FreeMarker 是一个模板引擎,它是一个 Java 库,用于根据模板和变化的数据生成文本输出(如 HTML 网页、电子邮件、配置文件、源代码等)。模板使用 FreeMarker 模板语言(FTL)编写,这是一种简单的专用语言(不是像 PHP 这样的全功能编程语言)。通常,通用编程语言(如 Java)用于准备数据(执行数据库查询、进行业务计算),然后 Apache FreeMarker 使用模板显示这些准备好的数据。
项目快速启动
环境准备
确保你已经安装了以下工具:
- Java JDK 8 或更高版本
- Git
- Maven
克隆项目
git clone https://github.com/apache/freemarker-site.git
cd freemarker-site
构建项目
mvn clean install
运行示例
以下是一个简单的 FreeMarker 模板示例:
模板文件 (example.ftl):
<html>
<head><title>Welcome</title></head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product: <a href="${latestProduct.url}">${latestProduct.name}</a>!</p>
</body>
</html>
Java 代码:
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;
import java.io.File;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
public class FreeMarkerExample {
public static void main(String[] args) throws Exception {
// 创建配置实例
Configuration cfg = new Configuration(Configuration.VERSION_2_3_29);
cfg.setDirectoryForTemplateLoading(new File("path/to/templates"));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
cfg.setLogTemplateExceptions(false);
cfg.setWrapUncheckedExceptions(true);
cfg.setFallbackOnNullLoopVariable(false);
// 数据模型
Map<String, Object> data = new HashMap<>();
data.put("user", "Big Joe");
Map<String, String> latestProduct = new HashMap<>();
latestProduct.put("url", "products/greenmouse.html");
latestProduct.put("name", "green mouse");
data.put("latestProduct", latestProduct);
// 获取模板
Template temp = cfg.getTemplate("example.ftl");
// 合并数据模型与模板
try (Writer out = new OutputStreamWriter(System.out)) {
temp.process(data, out);
}
}
}
应用案例和最佳实践
应用案例
- Alfresco: 使用 FreeMarker 进行企业内容管理(ECM),包括文档管理、协作和记录管理。
- Synesty Studio: 使用 FreeMarker 作为脚本语言进行数据操作和逻辑处理,以及渲染所有网页。
最佳实践
- 模板设计: 保持模板简洁,专注于数据展示而非业务逻辑。
- 数据准备: 在模板外部使用 Java 等语言准备数据,确保模板只负责展示。
- 错误处理: 使用适当的错误处理机制,如
TemplateExceptionHandler.RETHROW_HANDLER
。
典型生态项目
- Apache Maven: 用于项目构建和管理。
- Apache Tomcat: 用于部署和运行 Java Web 应用。
- Spring Framework: 用于构建企业级应用,与 FreeMarker 集成良好。
通过以上步骤,你可以快速启动并使用 Apache FreeMarker 进行文本生成和模板渲染。希望这篇教程对你有所帮助!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考