SpringBoot集成Freemarker生成HTML详解
5星 · 超过95%的资源 9 浏览量
更新于2024-09-04
收藏 101KB PDF 举报
"这篇文章主要讲解了如何在Java项目中集成Freemarker模板引擎来生成静态HTML页面,通过Spring Boot框架实现。文中通过具体的步骤和示例代码,详细阐述了整个过程,适合学习或工作中需要此类技术的读者参考。"
在Java开发中,使用Freemarker作为模板引擎可以方便地动态生成HTML页面。以下是一步步集成Freemarker并生成静态HTML的详细步骤:
1. 引入依赖
要在Spring Boot项目中使用Freemarker,首先需要在`pom.xml`文件中添加Spring Boot提供的`spring-boot-starter-freemarker`依赖。这会自动包含Freemarker库和其他相关依赖。
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
```
2. 配置Freemarker
在`application.properties`文件中配置Freemarker的相关参数,指定模板文件路径、后缀名、字符集等信息:
```
###freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########
```
这里指定了模板文件位于`src/main/resources/templates`目录下,文件后缀为`.ftl`,字符集为UTF-8。
3. 创建FTL模板文件
在`resources/templates`目录下创建FTL(Freemarker Template Language)文件,例如`test.ftl`,编写HTML结构,并在其中使用Freemarker语法插入动态数据。以下是一个简单的例子:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>FreeMarker</title>
</head>
<body>
<h1>Simple project</h1>
<h1>${key}</h1>
</body>
</html>
```
`${key}`是Freemarker表达式,将在运行时替换为实际值。
4. 编写Controller
创建一个Spring MVC的Controller,定义一个处理请求的方法,将数据模型传递给视图。这里使用`Model`对象添加属性,然后返回视图名称(即FTL文件名):
```java
@RestController
public class TestController {
@GetMapping("/test")
public String test(Model model, HttpServletRequest request) {
model.addAttribute("key", "test project");
return "test";
}
}
```
这个方法将`key`属性设置为`test project`,并返回视图`test.ftl`。
5. 生成HTML静态文件
通常,Spring Boot会自动处理Freemarker模板并返回生成的HTML给客户端。但如果你需要生成静态HTML文件,可以编写一个工具类来实现这个功能。以下是一个简单的工具类示例,用于读取模板并生成HTML:
```java
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FreemarkerHtmlGenerator {
private Configuration cfg;
public FreemarkerHtmlGenerator() {
cfg = new Configuration(Configuration.VERSION_2_3_30);
// 设置模板路径,与application.properties中的templateLoaderPath一致
cfg.setDirectoryForTemplateLoading(Paths.get("src/main/resources/templates").toFile());
cfg.setDefaultEncoding("UTF-8");
}
public void generateHtml(String templateName, Map<String, Object> dataModel, String outputPath) throws IOException, TemplateException {
Template template = cfg.getTemplate(templateName + ".ftl");
Writer out = new OutputStreamWriter(Files.newOutputStream(Paths.get(outputPath)), "UTF-8");
template.process(dataModel, out);
out.close();
}
}
```
使用这个工具类,你可以指定模板名称、数据模型和输出路径,它会根据提供的信息生成静态HTML文件。
通过以上步骤,你可以在Java项目中集成Freemarker,动态生成HTML,并选择性地将其转换为静态文件。这种方式适用于构建博客系统、文档生成或其他需要动态内容转静态页面的场景。记得在实际开发中,根据项目需求调整配置和实现细节。
140 浏览量
2019-08-13 上传
170 浏览量
112 浏览量
178 浏览量
168 浏览量
weixin_38597970
- 粉丝: 4
- 资源: 919