介绍
- FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序。
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据,简单来讲就是模板加数据模型,然后输出页面(如下图)
快速使用
- 创建SpringBoot项目,引入FreeMarker依赖
<!-- 添加freemaker依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
- 学习Freemarker的默认配置,一般我们无需修改配置
- 创建模板页面hello.ftl
基本操作
访问对象的方式:${stu.name}
遍历集合
<#list list as stu>
序号:${stu_index}
姓名:${stu.name}
电话:${stu.phone}
</#list>
逻辑判断
<#if (age > 40)>
大叔级
<#elseif (age>30) >
老腊肉
<#else >
小鲜肉
</#if>
NULL值的处理
${nullObject!}
<#if nullObject??>
该值不为null
<#else > 该值为null
</#if>
例子:生成单个商品的静态页面
- Controller
@RequestMapping("/createHtml")
public String createHtml(Integer gID, HttpServletRequest req) throws Exception {
// 1.根据商品ID查询对象
Goods goods= goodsService.getById(gID);
Map<String,Object> map = new HashMap<String, Object>();
map.put("goods",goods);
map.put("images",goods.getGimage().split("\\|"));
map.put("contextPath",req.getContextPath()+"/");
// 1.获取静态资源你文件路径
String path = ItemController.class.getClassLoader().getResource("static").getPath();
File file = new File(path+File.separator+"page");
// 2.创建页面存在的路径
if(!file.exists()){
file.mkdirs();
}
try {
// 3.获取模板
Template template = configuration.getTemplate("goodsItem.ftl");
// 4.设置生成模板的路径
FileWriter fileWriter = new FileWriter(file.getAbsolutePath()+File.separator+gID+".html");
// 5.生成模板
template.process(map,fileWriter);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
- 单个商品模板
设置base属性
遍历图片集合