Spring Boot 整合 FreeMarker

本贴最后更新于 2208 天前,其中的信息可能已经斗转星移

FreeMarker 是一个非常古老的模板引擎,可以用在 Web 环境或者非 Web 环境中。与 Thymeleaf 不同 FreeMarker 需要经过解析才能够在浏览器中展示出来。FreeMarker 不仅可以用来配置 HTML 页面模板,也可以作为电子邮件模板、配置文件模板以及源码模板等。Spring Boot 中对 FreeMarker 整合也提供了很好的支持,主要整合步骤如下:

1.新建 Spring Boot 工程,然后添加 spring-boot-starter-webspring-boot-starter-freemarker 依赖,代码如下:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>

2.配置 FreeMarker,通过 application.properties 配置文件进行设置。代码如下:

#HttpServletRequest 的属性是否可以覆盖 controller 中 model 的同名项 spring.freemarker.allow-request-override=false #Http Session 的属性是否可以覆盖 controller model 的同名项 spring.freemarker.allow-session-override=false #是否开启缓存 spring.freemarker.cache=false #模板文件编码 spring.freemarker.charset=UTF-8 #是否检查模板位置 spring.freemarker.check-template-location=true #Content-Type的值 spring.freemarker.content-type=text/html #是否将HttpServletRequest中的属性添加到Model中 spring.freemarker.expose-request-attributes=false #是否将HttpSession中的属性添加到Model中 spring.freemarker.expose-session-attributes=false #模板文件后缀 spring.freemarker.suffix=.ftl #模板文件位置 spring.freemarker.template-loader-path=classpath:/templates/

3.创建 Book 实体类,然后在 Controller 中返回 ModelAndView ,代码如下:

public class Book { private Integer id; private String name; private String author; @Override public String toString() { return "Book{" + "id=" + id + ", name='" + name + '\'' + ", author='" + author + '\'' + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; }
@Controller public class BookController { @GetMapping("/books") public ModelAndView books(){ List<Book> books=new ArrayList<>(); Book b1=new Book(); b1.setId(1); b1.setAuthor("罗贯中"); b1.setName("三国演义"); Book b2=new Book(); b2.setId(2); b2.setAuthor("曹雪芹"); b2.setName("红楼梦"); books.add(b1); books.add(b2); ModelAndView mv=new ModelAndView(); mv.addObject("books",books); mv.setViewName("books"); return mv; } }

4.在 resources 目录下的 templates 录中创建 books.ftl 具体代码如下:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <table border="1"> <tr> <td>图书编号</td> <td>图书名称</td> <td>图书作者</td> </tr> <#if books ??&&(books?size>0)> <#list books as book> <tr> <td>${book.id}</td> <td>${book.name}</td> <td>${book.author}</td> </tr> </#list> </#if> </table> </body> </html>

5.运行项目,在浏览器中输入 http://localhost:8080/books 即可看到运行结果,如图所示。

4.jpg

本文重点介绍 Spring Boot 整合 FreeMarker 并非 FreeMarker 的基础用法,关于 FreeMarker 的更多资料,可以查看 https://freeMarker.apache.org

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    949 引用 • 1460 回帖
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 467 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...