首页
/ Apache FreeMarker™ 技术文档

Apache FreeMarker™ 技术文档

2024-12-18 08:39:21作者:苗圣禹Peter

1. 安装指南

使用 Maven 安装

如果你使用 Maven 进行项目管理,只需在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker-gae</artifactId>
    <version>{version}</version>
</dependency>

注意:确保没有其他依赖项引入旧版本的 freemarker(groupId 为 freemarker 而不是 org.freemarker),否则可能会导致运行时行为不可预测。

手动安装

如果不使用 Maven,可以直接将 freemarker.jar 文件复制到你的 Java 应用程序的 ClassLoader 可以找到的位置。例如,如果你在 Web 应用程序中使用 FreeMarker,可以将 freemarker.jar 放入 WEB-INF/lib 目录。

FreeMarker 没有强制依赖项,但有一些可选依赖项。通常情况下,你不需要处理这些依赖项,除非你使用了某些需要特定库的特性。

升级到 OpenJDK 9 或更高版本

如果你升级到 OpenJDK 9 或更高版本,并且你在模板中使用 XPath 查询,你需要添加 Apache Xalan 作为依赖项,因为 freemarker.ext.dom 无法再使用 OpenJDK 内置的 XPath 支持。

2. 项目的使用说明

什么是 Apache FreeMarker™?

Apache FreeMarker™ 是一个“模板引擎”,它是一个通用的工具,用于基于模板生成文本输出(从 HTML 到自动生成的源代码)。它是一个 Java 包,供 Java 程序员使用的类库。它本身并不是一个面向最终用户的应用程序,而是程序员可以嵌入到其产品中的工具。FreeMarker 的设计目的是为基于 MVC(模型视图控制器)模式的 servlet 应用程序生成 HTML Web 页面。

使用场景

FreeMarker 通常用于以下场景:

  • 生成动态 HTML 页面。
  • 生成电子邮件模板。
  • 生成源代码、配置文件等。

3. 项目 API 使用文档

基本用法

FreeMarker 的核心 API 主要包括 ConfigurationTemplate 类。以下是一个简单的示例,展示如何使用 FreeMarker 生成 HTML 输出:

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_31);

        // 指定模板文件的位置
        cfg.setDirectoryForTemplateLoading(new File("templates/"));

        // 设置异常处理方式
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);

        // 获取模板
        Template temp = cfg.getTemplate("example.ftl");

        // 创建数据模型
        Map<String, Object> root = new HashMap<>();
        root.put("message", "Hello, FreeMarker!");

        // 合并模板和数据模型
        Writer out = new OutputStreamWriter(System.out);
        temp.process(root, out);
    }
}

模板示例

以下是一个简单的 FreeMarker 模板文件 example.ftl

<!DOCTYPE html>
<html>
<head>
    <title>FreeMarker Example</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>

常用 API

  • Configuration:用于配置 FreeMarker 的全局设置。
  • Template:表示一个模板文件。
  • TemplateExceptionHandler:用于处理模板解析和执行过程中的异常。

4. 项目安装方式

通过 Maven 安装

如前所述,通过在 pom.xml 中添加依赖项来安装 FreeMarker。

手动安装

freemarker.jar 文件复制到你的项目中,并确保它位于 ClassLoader 可以找到的路径中。

构建 FreeMarker

如果你需要从源码构建 FreeMarker,可以按照以下步骤进行:

  1. 下载源码发布包或从源码仓库中检出 FreeMarker。
  2. 确保你安装了 JDK 8、JDK 16 和 JDK 17(仅用于某些测试)。
  3. 在项目根目录下运行 ./gradlew jar(Windows 上运行 gradlew.bat jar)来构建 freemarker.jar

IDE 设置

IntelliJ IDEA

  1. 打开项目:选择 settings.gradle.kts 文件。
  2. 配置 Gradle:确保 Gradle JVM 设置为 JDK 17 或更高版本。
  3. 导入代码风格和检查配置。

Eclipse

  1. 将项目作为 Gradle 项目导入。
  2. 配置 Java 编译器和代码格式化器。

通过以上步骤,你可以顺利安装、使用和构建 Apache FreeMarker™ 项目。

热门项目推荐
相关项目推荐

项目优选

收起
Python-100-DaysPython-100-Days
Python - 100天从新手到大师
Python
373
72
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
276
72
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
200
47
xzs-mysqlxzs-mysql
学之思开源考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序,能覆盖到pc机和手机等设备。 支持多种部署方式:集成部署、前后端分离部署、docker部署
HTML
5
1
LangChatLangChat
LangChat: Java LLMs/AI Project, Supports Multi AI Providers( Gitee AI/ 智谱清言 / 阿里通义 / 百度千帆 / DeepSeek / 抖音豆包 / 零一万物 / 讯飞星火 / OpenAI / Gemini / Ollama / Azure / Claude 等大模型), Java生态下AI大模型产品解决方案,快速构建企业级AI知识库、AI机器人应用
Java
10
3
gin-vue-admingin-vue-admin
🚀Vite+Vue3+Gin的开发基础平台,支持TS和JS混用。它集成了JWT鉴权、权限管理、动态路由、显隐可控组件、分页封装、多点登录拦截、资源权限、上传下载、代码生成器【可AI辅助】、表单生成器和可配置的导入导出等开发必备功能。
Go
16
3
source-vuesource-vue
🔥 一直想做一款追求极致用户体验的快速开发平台,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间对若依框架进行扩展写了一套快速开发系统。如此有了开源字节快速开发平台。该平台基于 Spring Boot + MyBatis + Vue & Element ,包含微信小程序 & Uniapp, Web 报表、可视化大屏、三方登录、支付、短信、邮件、OSS...
Java
24
2
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
898
0
madongmadong
基于Webman的权限管理系统
PHP
4
0
cool-admin-javacool-admin-java
🔥 cool-admin(java版)一个很酷的后台权限管理框架,Ai编码、流程编排、模块化、插件化、CRUD极速开发,永久开源免费,基于springboot3、typescript、vue3、vite、element-ui等构建
Java
18
2