SpringBoot集成Freemarker生成HTML详解

5星 · 超过95%的资源 4 下载量 195 浏览量 更新于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,并选择性地将其转换为静态文件。这种方式适用于构建博客系统、文档生成或其他需要动态内容转静态页面的场景。记得在实际开发中,根据项目需求调整配置和实现细节。