springboot整合freemarker生成静态html的demo.zip
在本项目"springboot整合freemarker生成静态html的demo.zip"中,我们将探讨如何将SpringBoot框架与FreeMarker模板引擎结合,以实现动态数据驱动的静态HTML页面生成。FreeMarker是一个强大的、开源的模板语言,它允许开发者将业务逻辑与视图层分离,使得前端设计更加灵活。 我们需要在SpringBoot项目的`pom.xml`文件中添加FreeMarker的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> ``` 完成依赖添加后,SpringBoot会自动配置FreeMarker的相关设置。默认情况下,FreeMarker模板文件(`.ftl`)应该放在`src/main/resources/templates`目录下。 接着,创建一个FreeMarker模板文件,例如`index.ftl`,在这个文件中,我们可以定义HTML结构,并使用`${}`符号来插入动态数据: ```html <!DOCTYPE html> <html> <head> <title>${title}</title> </head> <body> <h1>Welcome to ${appName}!</h1> <p>当前时间:${currentDateTime}</p> </body> </html> ``` 然后,在SpringBoot的Controller层,我们需要创建一个处理请求的Controller方法,将模型数据绑定到FreeMarker模板,并返回生成的HTML: ```java import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import java.time.LocalDateTime; @Controller public class ViewController { @GetMapping("/index") public String index(Model model) { model.addAttribute("title", "SpringBoot + FreeMarker Demo"); model.addAttribute("appName", "Demo App"); model.addAttribute("currentDateTime", LocalDateTime.now()); return "index"; // 这里的"index"对应的是模板文件的名字 } } ``` 上述代码中,`Model`对象用于存储要在模板中使用的数据,`return "index"`表示我们要使用`index.ftl`模板来生成响应。 此外,如果想要通过字符串生成HTML,可以使用`FreemarkerTemplateUtils`类(需要引入`spring-context-support`依赖),如下所示: ```java import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import java.io.IOException; import java.util.HashMap; import java.util.Map; @Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); cfg.setClassForTemplateLoading(this.getClass(), "/"); Map<String, Object> dataModel = new HashMap<>(); dataModel.put("title", "String Gen Demo"); dataModel.put("message", "Hello, World!"); try { Template template = cfg.getTemplate("stringGen.ftl"); String generatedHtml = FreeMarkerTemplateUtils.processTemplateIntoString(template, dataModel); System.out.println(generatedHtml); } catch (IOException | TemplateException e) { e.printStackTrace(); } ``` 这里,我们创建了一个`HashMap`来存储数据,然后使用`FreeMarkerTemplateUtils`的`processTemplateIntoString`方法将模板与数据合并成HTML字符串。 这个"springboot整合freemarker生成静态html的demo"项目展示了如何在SpringBoot应用中集成FreeMarker,以及如何通过模板和字符串两种方式生成HTML。这有助于我们构建更高效、更易于维护的Web应用,将视图层与业务逻辑有效解耦。
- 1
- 2
- 3
- 粉丝: 303
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 用Qt6开发的一套文本编辑器.zip-2024
- Java电影推荐系统-管理后台.zip
- lab_jx_db.td
- 3421_134229612.html
- 基于SpringBoot、ffmpeg、Redis、MySQL、vue.js的一个视频分享订阅网站,实现了一个视频网站的上传视频、播放视频、个人主页、订阅、评论、通知等基本功能 .zip
- 爬取猫眼和豆瓣的数据,基于django + websocket + vue 的电影数据实时可视化系统,可视化使用Echarts.zip
- 用Qt实现一个电子相册.zip
- c++语言编程实现prim算法求得最小生成树
- spingboot+mybatis+redis构建的高并发秒杀系统.zip
- readera-24-09-08plus2020.apk