"FreeMarker API 是一款用于网站开发和应用管理的模板引擎,常用于SSH和SSI场景,类似于JSTL的表达式。本资源提供了FreeMarker 2.3.10版本的程序员指南中文版,由Magice(魔冰)翻译。文档包括前言、快速入门、数据模型、配置、以及其他说明等章节,旨在帮助开发者深入理解和使用FreeMarker的运行机制。"
在FreeMarker的使用中,以下是一些关键知识点:
**一、快速入门**
1. **创建配置实例**: 首先需要创建一个`freemarker.template.Configuration`对象,这是FreeMarker的核心,用于存储应用级别的配置信息,并负责模板的加载和预解析。
```java
Configuration config = new Configuration(Configuration.VERSION_2_3_30);
config.setDirectoryForTemplateLoading(new File("/path/to/templates"));
```
1. **创建数据模型(DataModel)**: 数据模型是FreeMarker模板与Java对象之间的桥梁,将Java对象转换为可供模板使用的数据结构。
```java
Map<String, Object> dataModel = new HashMap<>();
dataModel.put("name", "John Doe");
dataModel.put("age", 30);
```
1. **获取模版(Template)**: 使用配置对象加载模板文件。
```java
Template template = config.getTemplate("example.ftl");
```
1. **合并模版与数据模型**: 将模板与数据模型合并,生成最终的HTML或其他输出格式。
```java
StringWriter writer = new StringWriter();
template.process(dataModel, writer);
```
**二、数据模型**
2. **基础类型**: FreeMarker支持Java的基本数据类型,如字符串、整数、布尔值等。
2. **Scalar类型**: 单值对应的DataModel,表示不可分割的单一值。
2. **容器类型**: 如List、Map等,可以包含多个值或数据结构。
2. **方法变量**: 可以在模板中调用对象的方法。
2. **转换器变量**: 提供将不同类型的值转换为可渲染格式的功能。
2. **节点变量**: 处理XML文档节点的数据模型。
2. **对象包裹**: FreeMarker可以自动将Java对象包裹成DataModel以便模板使用。
**三、配置(Configuration)**
3. **基础**: 设置配置参数,如模板目录、缓存策略等。
3. **共享变量**: 在所有模板间共享的变量。
3. **配置参数**: 包括模板语言的设置,如是否启用指令、错误处理模式等。
3. **加载模板**: 指定模板的来源,可以是文件系统、URL或类路径。
3. **异常处理**: 配置如何处理模板执行时的错误。
**四、其他说明**
4. **变量**: 模板中的变量定义和使用,包括变量的命名规则和作用域。
4. **字符编码**: 模板的输出编码设置,确保正确显示非ASCII字符。
4. **多线程**: FreeMarker支持多线程环境,但需要注意线程安全问题。
4. **Bean包裹**: 自动将Java Bean转换为DataModel,方便模板访问其属性。
这个指南对理解FreeMarker的工作原理、数据模型的构建、配置管理以及模板处理等方面提供深入的指导,是开发人员使用FreeMarker进行Web开发的重要参考资料。通过学习和实践,开发者能够熟练地利用FreeMarker构建动态网站和应用程序。