本章节将介绍怎样将 FreeMarker 和 Spring Boot 进行集成,Spring Boot 利用 FreeMarker 来开发前端界面。
创建 Spring Boot 项目的方法很多,这里将介绍怎样利用 IDEA 快速创建 Spring Boot 项目。步骤如下:
(1)选中我们的项目(这里提前创建了一个 maven 的 pom 项目,下面将创建一个模块)右击,选择“New”、“Module”。如下图:
(2)选择“Spring Initializr”,默认将使用“https://start.spring.io”地址加载 Spring Boot 的依赖组件。如下图:
(3)填写 Maven 项目的 group、artifact 和 jdk 版本等信息。如下图:
(4)添加 Spring Boot 依赖(此时,就是使用第2步选择的 https://start.spring.io 地址去加载依赖,供我们选择 ),此时我们选择 Spring Web 和 Apache Freemarkerr 依赖。如下图:
(5)项目 pom 的依赖如下:
<dependencies> <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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
(6)修改 application.properties 文件,添加 freemarker 配置信息。如下:
## Freemarker # 指定 HttpServletRequest 的属性是否可以覆盖 controller 中与 model 同名项 spring.freemarker.allow-request-override=false # 是否开启模版缓存 spring.freemarker.cache=true # 是否检查模版路径是否存在 spring.freemarker.check-template-location=true # 设定模版编码 spring.freemarker.charset=utf-8 # 设定Content-Type spring.freemarker.content-type=text/html # 设定所有request的属性在merge到模板的时候,是否要都添加到model中 spring.freemarker.expose-request-attributes=false # 设定所有HttpSession的属性在merge到模板的时候,是否要都添加到model中 spring.freemarker.expose-session-attributes=false # 设定是否以springMacroRequestContext的形式暴露RequestContext给Spring’s macrolibrary使用 spring.freemarker.expose-spring-macro-helpers=false # 设定freemarker模板的前缀 spring.freemarker.prefix= # 指定RequestContext属性的名 spring.freemarker.request-context-attribute=freemarker # 设定模板的后缀 spring.freemarker.suffix=.ftl # 设定模板的加载路径,多个以逗号分隔,默认: ["classpath:/templates/"] spring.freemarker.template-loader-path=classpath:/templates/ # 指定使用模板的视图列表 #spring.freemarker.view-names= # Logging logging.level.root=DEBUG
(7)添加控制器,该控制器返回 freemarker 模版文件。如下:
package com.hxstrive.demo2; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; @SpringBootApplication @Controller public class Demo2Application { public static void main(String[] args) { SpringApplication.run(Demo2Application.class, args); } @RequestMapping("/") public String index(Map<String,Object> map) { map.put("title", "Spring Boot 集成 FreeMarker"); map.put("date", new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss").format(new Date())); return "index"; } }
(8)编写 freemarker 模版文件,该文件放到 templates 目录下面。内容如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>SpringBoot集成FreeMarker</title> </head> <body> <h1>${title?default('title')}</h1> <p>${date?default('')}</p> </body> </html>
(9)项目结构图如下:
(10)项目运行效果图如下:
项目源码见 demo2 子模块。