目录
1.添加 FreeMarker 依赖:如果使用的是 Maven 项目,首先需要在 pom.xml 文件中添加 FreeMarker 的依赖。
FreeMarker 生成 HTML 文件的过程涉及创建 FreeMarker 模板、准备数据模型,并通过 FreeMarker 引擎将模板和数据模型结合以生成最终的 HTML 输出。以下是详细步骤:
1.添加 FreeMarker 依赖:
如果使用的是 Maven 项目,首先需要在 pom.xml 文件中添加 FreeMarker 的依赖。
即在pom.xml文件中加上一段这个代码:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>你的FreeMarker版本号</version>
</dependency>
2.创建 FreeMarker 模板:
创建一个以 .ftl 结尾的文件作为 FreeMarker 模板。在这个文件中,可以使用 FreeMarker 的模板语言来定义 HTML 结构,并插入变量、条件语句和循环等。
例如,创建一个名为 index.ftl 的文件:
<!DOCTYPE html>
<html>
<head>
<title>${title}</title>
</head>
<body>
<h1>Welcome to ${companyName}!</h1>
<ul>
<#list employees as employee>
<li>${employee.name} - ${employee.position}</li>
</#list>
</ul>
</body>
</html>
在上面的模板中,${title} 和 ${companyName} 是变量占位符,而 <#list ...> 是循环指令。
3.准备数据模型:
在 Java 代码中,需要创建一个数据模型,这个模型通常是一个 JavaBean 或 Map,它包含了模板中需要的所有数据。
Map<String, Object> dataModel = new HashMap<>();
dataModel.put("title", "My Company Website");
dataModel.put("companyName", "My Company");
List<Employee> employees = Arrays.asList(
new Employee("Alice", "Manager"),
new Employee("Bob", "Developer")
);
dataModel.put("employees", employees);
在上面的代码中,Employee 是一个简单的 Java 类,包含 name 和 position 属性。
4.配置 FreeMarker 引擎:
首先需要配置 FreeMarker 引擎,并指定模板文件的路径。
Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
cfg.setDirectoryForTemplateLoading(new File("/path/to/your/templates"));
cfg.setDefaultEncoding("UTF-8");
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
cfg.setLogTemplateExceptions(false);
cfg.setWrapUncheckedExceptions(true);
cfg.setFallbackOnNullLoopVariable(false);
5.合并模板和数据模型:
使用 FreeMarker 引擎的 getTemplate 方法获取模板,然后使用 process 方法将数据模型与模板结合,生成 HTML 内容。
Template template = cfg.getTemplate("index.ftl");
Writer out = new OutputStreamWriter(System.out);
template.process(dataModel, out);
process 方法会将数据模型中的数据填充到模板中的占位符中,并生成最终的 HTML 内容。在这个例子中,HTML 内容被输出到控制台,但你也可以将其输出到文件或其他输出流中。
6.输出 HTML 文件:
如果想要将生成的 HTML 内容保存到文件中,可以将 Writer 替换为 FileWriter 或其他类型的 Writer,并指定输出文件的路径。
Writer fileOut = new FileWriter(new File("/path/to/output/index.html"));
template.process(dataModel, fileOut);
fileOut.close();
这样,就通过 FreeMarker 生成了一个 HTML 文件了。在实际应用中,可能还需要处理异常、配置 FreeMarker 的其他选项,以及根据具体需求调整模板和数据模型。