freemarker如何动态生成html
时间: 2023-10-18 10:21:58 浏览: 95
FreeMarker
Freemarker 是一款流行的 Java 模板引擎,它可以用于生成动态的 HTML 页面。下面简要介绍一下使用 Freemarker 生成 HTML 的过程:
1. 编写 Freemarker 模板文件
首先,我们需要编写一个 Freemarker 模板文件,它类似于一个 HTML 文件,但是其中可以包含一些动态的变量和逻辑。例如,我们可以创建一个 `template.ftl` 文件,其中包含以下内容:
```html
<!DOCTYPE html>
<html>
<head>
<title>${title}</title>
</head>
<body>
<h1>${heading}</h1>
<ul>
<#list items as item>
<li>${item}</li>
</#list>
</ul>
</body>
</html>
```
在上面的模板中,`${title}`、`${heading}` 和 `${items}` 都是动态变量,它们的值将在后面的 Java 代码中进行设置和填充。
2. 创建一个 Configuration 对象
接下来,我们需要创建一个 `Configuration` 对象,它将负责加载和解析模板文件。通常,我们可以使用下面的代码创建一个 `Configuration` 对象:
```java
Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
cfg.setDirectoryForTemplateLoading(new File("/path/to/templates"));
cfg.setDefaultEncoding("UTF-8");
```
在上面的代码中,我们指定了 Freemarker 版本号、模板文件的路径和默认编码方式。
3. 准备数据模型
接下来,我们需要准备数据模型,它将提供动态变量的值。例如,我们可以创建一个 `Map` 对象,其中包含 `title`、`heading` 和 `items` 三个变量的值:
```java
Map<String, Object> data = new HashMap<>();
data.put("title", "My Awesome Page");
data.put("heading", "Welcome to my page!");
List<String> items = new ArrayList<>();
items.add("item 1");
items.add("item 2");
items.add("item 3");
data.put("items", items);
```
4. 加载模板文件并生成 HTML
最后,我们可以使用 `Configuration` 对象加载模板文件,并将数据模型填充到模板中。下面是一个示例代码:
```java
Template template = cfg.getTemplate("template.ftl");
StringWriter out = new StringWriter();
template.process(data, out);
String html = out.toString();
```
在上面的代码中,我们首先通过 `cfg.getTemplate()` 方法加载模板文件,然后使用 `template.process()` 方法将数据模型填充到模板中,最终生成一个字符串类型的 HTML 页面。
以上就是使用 Freemarker 动态生成 HTML 页面的基本过程。实际上,Freemarker 还提供了很多高级功能,例如条件语句、循环语句、宏定义等,可以让我们更加灵活和方便地生成动态页面。
阅读全文