第一部分:Spring Boot 集成 FreeMarker
1、pom.xml
需要这些依赖
<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、yml
我喜欢 yml,所以删掉 application.properties
,新建 application.yml
3、配置
在 application.yml
中添加如下配置
# freemarker
spring:
freemarker:
template-loader-path: classpath:/templates/
cache: false
charset: UTF-8
check-template-location: true
content-type: text/html
expose-request-attributes: true
expose-session-attributes: true
request-context-attribute: request
suffix: .html
4、Controller - View
package com.fengwenyi.demo.freemarker.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* @author Wenyi Feng
*/
@Controller
public class HomeController {
@RequestMapping("/")
public ModelAndView home() {
ModelAndView mv = new ModelAndView("home");
return mv;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>freemarker</title>
</head>
<body>
<center>
<h1>Hello FreeMarker!</h1>
<h6>Welcome to Learn FreeMarker With Me!</h6>
<div><i>目录</i></div>
<div>
<ul>
<li><a target="_blank" href="/value/get">取值 - 2018.06.13</a> </li>
<li><a target="_blank" href="/value/get">运算,集合 - 2018.06.14</a> </li>
<li><a target="_blank" href="/value/get">高级技巧 - 2018.06.15</a> </li>
</ul>
</div>
</center>
</body>
</html>
5、运行效果
第二部分:取值
1、学过 freemarker 的的童鞋都知道,需要在spring的配置文件中添加上一些属性,那Spring boot 应该怎么做呢?
# freemarker
spring:
freemarker:
template-loader-path: classpath:/templates/
cache: false
charset: UTF-8
check-template-location: true
content-type: text/html
expose-request-attributes: true
expose-session-attributes: true
request-context-attribute: request
suffix: .html
settings:
#number_format: '0.##' #数字格式化,无小数点,如果有小数,只保留两位小数
number_format: '0.#############################################'
date_format: 'yyyy_MM_dd HH:mm:ss' # 这个是对java.sql.Date起作用
# boolean_format: 'Y, N' # 一般不这么配置,因为我们需要逻辑值,如果需要,我们可以在需要的地方将Boolean->String
2、Controller
@GetMapping("/get")
public ModelAndView getValue() {
ModelAndView mv = new ModelAndView("get-value");
mv.addObject("intVar", 100);
mv.addObject("longVar", 100000000000000L);
mv.addObject("stringVar", "我是字符串");
mv.addObject("doubleVar", Math.PI);
// mv.addObject("doubleVar", 3.14);
// mv.addObject("doubleVar", 3.1415D);
mv.addObject("booleanVar", Boolean.TRUE);
mv.addObject("dateUtilVar", new Date());
mv.addObject("dateSqlVar", new java.sql.Date(new Date().getTime()));
mv.addObject("nullVar", null);
return mv;
}
3、View
<table border="1">
<tr>
<th width="200">Type</th>
<th width="300">Value</th>
</tr>
<tr>
<td align="center">Integer</td>
<td align="center"><font color="red">${intVar}</font></td>
</tr>
<tr>
<td align="center">Long</td>
<td align="center"><font color="red">${longVar}</font></td>
</tr>
<tr>
<td align="center">String</td>
<td align="center"><font color="red">${stringVar}</font></td>
</tr>
<tr>
<td align="center">Double</td>
<td align="center"><font color="red">${doubleVar}</font></td>
</tr>
<tr>
<td align="center">Boolean</td>
<td align="center"><font color="red">${booleanVar?string('Yes', 'No')}</font></td>
</tr>
<tr>
<td align="center">java.util.Date</td>
<td align="center"><font color="red">${dateUtilVar?string('yyyy/MM/dd HH:mm:ss')}</font></td>
</tr>
<tr>
<td align="center">java.sql.Date</td>
<td align="center"><font color="red">${dateSqlVar}</font></td>
</tr>
<tr>
<td align="center">null</td>
<td align="center"><font color="red">${nullVar!}</font></td>
</tr>
<tr>
<td align="center">null</td>
<td align="center"><font color="red">${nullVar! '-'}</font></td>
</tr>
<tr>
<td align="center">不存在的变量</td>
<td align="center"><font color="red">${notExist! '-'}</font></td>
</tr>
</table>
4、效果
资料
1、FreeMarker 模块的代码已上传至Github: https://github.com/fengwenyi/FreeMarker-demo
2、学习视频:Java模板引擎之Freemarker
来源:oschina
链接:https://my.oschina.net/u/3133467/blog/1829938