码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Boot 揭秘与实战(七) 实用技术篇 - FreeMarker 模板引擎

时间:2017-07-27 15:46:23      阅读:490      评论:0      收藏:0      [点我收藏+]

标签:boa   服务器   回顾   log   doc   页面   cti   request   gap   

文章目录

  1. 1. FreeMaker 代替 JSP 作为页面渲染
  2. 2. 生成静态文件
  3. 3. 扩展阅读
  4. 4. 源代码

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 模板引擎

标签:boa   服务器   回顾   log   doc   页面   cti   request   gap   

原文地址:http://www.cnblogs.com/cnblog-long/p/7244863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!