Spring Boot 提供了很多模板引擎的支持,例如 FreeMarker、Thymeleaf。这篇,我们看下 Spring Boot 如何集成和使用 FreeMarker。

Spring Boot 中使用 FreeMarker 模板非常简单方便。如果想要使用FreeMarker 模板引擎,首先,修改 POM 文件,添加依赖。

FreeMaker 代替 JSP 作为页面渲染

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-freemarker</artifactId>
  4. </dependency>

然后,我们创建模板。值得注意的是,Spring Boot 集成的 FreeMarker 默认的配置文件放在 classpath:/templates/。因此,我们需要在 src/main/resources/templates/ 添加模板文件。

例如,我们添加一个模板文件,叫做 welcome.ftl。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <body>
  4. Date: ${time?date}<br>
  5. Message: ${message}
  6. </body>
  7. </html>

那么,最后一步,我们在控制类中只需要这么配置就可以了。

  1. @Controller("template.freemarkerController")
  2. public class WelcomeController {
  3. @RequestMapping("/template/freemarker/welcome")
  4. public String welcome(Map<String, Object> model) {
  5. model.put("time", new Date());
  6. model.put("message", "梁桂钊");
  7. return "welcome";
  8. }
  9. }

还记得我们之前的 WebMain 么,我们来回顾下。

  1. @RestController
  2. @EnableAutoConfiguration
  3. @ComponentScan(basePackages = { "com.lianggzone.springboot" })
  4. public class WebMain {
  5. public static void main(String[] args) throws Exception {
  6. SpringApplication.run(WebMain.class, args);
  7. }
  8. }

直接运行 WebMain 类,或者可以通过“mvn spring-boot:run”在命令行启动该应用。会启动一个内嵌的 Tomcat 服务器运行在 8080 端口。访问 “http://localhost:8080/template/freemarker/welcome” 可以看到页面上显示结果。

生成静态文件

上面的场景,是非常典型的 MVC 的使用场景,我们通过 FreeMaker 代替 JSP 作为页面渲染。但是,随着,前后端分离,JSP 渐渐远离我们的视野,服务端更多地处理业务逻辑,通过 RESTful 或者 RPC 对外提供服务。页面的交互,交给前端做渲染。

这种情况下,是不是 FreeMarker 就没有用武之地了呢?实际上,FreeMarker 作为模板引擎,还有很多使用场景,例如,我们可以把我们可以动静分离,把相对不会变化的内容通过 FreeMarker 渲染生成静态文件上传到内容服务,内容服务通过 CDN 进行资源分发。

那么,我们对上面的代码进行一个小改造,模拟一个文件生成到本地的场景。

  1. @RestController("template.freemarkerController2")
  2. @EnableAutoConfiguration
  3. public class Welcome2Controller {
  4. @Autowired
  5. private Configuration configuration;
  6. @RequestMapping("/template/freemarker/welcome2")
  7. public String welcome2(Map<string, object=""> model) throws Exception {
  8. <string, object=""> model.put("time", new Date());
  9. <string, object=""> model.put("message", "梁桂钊");
  10. <string, object="">
  11. <string, object=""> Template template = configuration.getTemplate("welcome.ftl");
  12. <string, object=""> String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
  13. <string, object="">
  14. <string, object=""> FileUtils.writeStringToFile(new File("d:/welcome.html"), content);
  15. <string, object="">
  16. <string, object=""> return "welcome";
  17. <string, object=""> }
  18. <string, object="">}

直接运行 WebMain 类,访问 “http://localhost:8080/template/freemarker/welcome2” 可以看到页面上显示结果,并查看D盘,是否生成文件了呢?

扩展阅读

源代码

相关示例完整代码: springboot-action
静态页面生成器: freemarker-utils

(完)

如果觉得我的文章对你有帮助,请随意打赏。

Spring Boot 揭秘与实战(七) 实用技术篇 - FreeMarker 模板引擎的更多相关文章

  1. Spring Boot 揭秘与实战(七) 实用技术篇 - StateMachine 状态机机制

    文章目录 1. 环境依赖 2. 状态和事件 2.1. 状态枚举 2.2. 事件枚举 3. 状态机配置4. 状态监听器 3.1. 初始化状态机状态 3.2. 初始化状态迁移事件 5. 总结 6. 源代码 ...

  2. Spring Boot 揭秘与实战(七) 实用技术篇 - 异步任务

    文章目录 1. Spring Boot 集成异步任务 2. 单发服务模式 3. 请求应答模式 4. 源代码 Spring 对异步任务具有很好的支持.这篇文章,我们透过 Spring Boot 来讲解下 ...

  3. Spring Boot 揭秘与实战(七) 实用技术篇 - Java Mail 发送邮件

    文章目录 1. Spring Boot 集成 Java Mail 2. 单元测试 3. 源代码 Spring 对 Java Mail 有很好的支持.因此,Spring Boot 也提供了自动配置的支持 ...

  4. Spring Boot 揭秘与实战 附录 - Spring Boot 公共配置

    Spring Boot 公共配置,配置 application.properties/application.yml 文件中. 摘自:http://docs.spring.io/spring-boot ...

  5. Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块

    文章目录 1. 实战的开端 – Maven搭建 2. 参数的配置 - 属性参数类 3. 真的很简单 - 简单的服务类 4. 自动配置的核心 - 自动配置类 5. spring.factories 不要 ...

  6. Spring Boot 揭秘与实战 源码分析 - 工作原理剖析

    文章目录 1. EnableAutoConfiguration 帮助我们做了什么 2. 配置参数类 – FreeMarkerProperties 3. 自动配置类 – FreeMarkerAutoCo ...

  7. Spring Boot 揭秘与实战 源码分析 - 开箱即用,内藏玄机

    文章目录 1. 开箱即用,内藏玄机 2. 总结 3. 源代码 Spring Boot提供了很多”开箱即用“的依赖模块,那么,Spring Boot 如何巧妙的做到开箱即用,自动配置的呢? 开箱即用,内 ...

  8. Spring Boot 揭秘与实战(九) 应用监控篇 - 自定义监控端点

    文章目录 1. 继承 AbstractEndpoint 抽象类 2. 创建端点配置类 3. 运行 4. 源代码 Spring Boot 提供的端点不能满足我们的业务需求时,我们可以自定义一个端点. 本 ...

  9. Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 健康监控

    文章目录 1. 内置 HealthIndicator 监控检测 2. 自定义 HealthIndicator 监控检测 3. 源代码 Health 信息是从 ApplicationContext 中所 ...

随机推荐

  1. InnoDB存储引擎介绍-(5) Innodb逻辑存储结构

    如果创建表时没有显示的定义主键,mysql会按如下方式创建主键: 首先判断表中是否有非空的唯一索引,如果有,则该列为主键. 如果不符合上述条件,存储引擎会自动创建一个6字节大小的指针. 当表中有多个非 ...

  2. 牛客网多校第3场Esort string (kmp)

    链接:https://www.nowcoder.com/acm/contest/141/E 来源:牛客网 题目描述 Eddy likes to play with string which is a ...

  3. SSL证书读取

    证书内容: MIIDhDCCAmygAwIBAgIFAV0Imw0wDQYJKoZIhvcNAQELBQAwXDEnMCUGA1UEAwweczUwLTYyLTEzNS0xNS5zZWN1cmVzZX ...

  4. Android应用启动时Activity被创建两次

    项目需要使用到播放器,用开源的ijkplayer播放器改装. 但是在调试过程中Activity的OnCreate()被调用两次,调试时直接连接手机调试,有时候又不一定是两次. 后来偶尔看到一句话 “当 ...

  5. Eclipse Mars-Ant无法使用jre1.6的问题

    https://www.jianshu.com/p/24b9517d7f43 Eclipse 升级到Mars 4.5.1版本后,老项目使用jdk1.6,通过ant编译jar时,会遇到如下问题: 使用j ...

  6. mac ci框架安装使用 memcached存session

    mac 安装memcached brew info memcached brew install memcached brew install memcached 安装过程具体不详细多讲 memcac ...

  7. OO第一次课程总结分析

    作为一个之前从未使用过java语言,主攻面向过程式编程的“面向对象”小白,于是乎从第一次作业开始时利用时间疯狂学习java语言,经过三次作业的残酷洗礼,自己对面向对象式编程多多少少有了初步的了解(前路 ...

  8. Saiku的下载与安装(一)

    Saiku- 数据可视化的工具,连接数据源展示数据,并且可方便导出xls/csv/pdf等文件的工具 一.Saiku下载 社区网址:https://community.meteorite.bi/ 二. ...

  9. sas 选择一段日期,和一定周期,生成日期序列和周期序列

    工作需要,得选择一段日期,和一定周期,生成日期序列和周期序列.暂时用七天为一个周期 data d; format date date9.; do date='04mar2018'd to'05may2 ...

  10. 1080 MOOC期终成绩

    对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分( ...