Day20-SpringBoot整合FreeMarker
💖Day20-SpringBoot整合FreeMarker💖
FreeMarker是一个非常古老,可以用在 Web 环境或者非 Web 环境中。 与 Thymeleaf不同,FreeMarker 需要经过解析才能够在浏览器中展示出来。 FreeMarker 不仅可以用来配置HTML页面模板,也可以作为电子邮件模板、配置文件模板以及源码模板等。 Spring Boot 中对 FreeMarker整合也提供了很好的支持,主要整合步骤如下:
🚀1、创建项目,添加依赖
🛬首先创建SpringBoot项目,然后添加spring-boot-starter-web和spring-boot-starter-freemarker依赖,代码如下
<dependency> <groupId›org.springframework.boot</groupId> <artifactId›spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId›org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
🚀2、配置FreeMark
🛬SpringBoot对FreeMarker也提供了自动化配置类FreeMarkerAutoConfiguration,相关的配置属性在FreeMarkerProperties中,FreeMarkerProperties部分源码如下:
@ConfigurationProperties (prefix = "spring.freemarker")
public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties{
public static final String DEFAULT TEMPLATE LOADER PATH = "classpath:/templates/".
public static final String DEFAULT PREFIX = "";
public static final String DEFAULT SUFFIX = ".ftl";
}
🛬从该默认配置中可以看到,FreeMarker 默认模板位 置 和 Thymeleaf 一样,都在classpath:/templates/中,默认文件后缀是.ftl。开发者可以 在 application.properties 中对这些默认配置进行修改,部分常见配置如下:
#HttpServletRequest 的属性是否可以覆盖 controller 中mode1 的同名项 spring . freemarker .allow- request-override=false #Httpsession 的属性是否可以覆盖 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 #jH spring. freemarker.content-type-text/html #是否将 HttpservletRequest 中的属性添加到 Mode1 中 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、配置控制器
🛬控制器和 Thymeleaf中的控制器一样,详细看上一集。
🚀4、创建视图
🛬按照配置文件,在resources/templates 目录下创建 books.ftl文件,内容如下:
代码解释:
-
第14 行首先判断model 中的books 不为空并且books 中有数据,然后进行遍历。 第 15~21 行表示遍历books 集合,将集合中的数据通过表格展示出来。
