工具:freemarker
介绍:FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等,主要用Freemarker做静态页面或是页面展示
1.模板的语法介绍
1)访问map中的key:${key}
2) 访问pojo中的属性,(Student对象,学号、姓名、年龄)
Student对象。学号、姓名、年龄
3)取集合中的数据
循环使用格式:(取循环中的下标:${student_index})
<#list studentList as student>
${student.id}/${studnet.name}
</#list>
循环使用格式:
<#list 要循环的数据 as 循环后的数据>
</#list>
4)判断
<#if student_index % 2 == 0>
<#else>
</#if>
5)日期化格式类型
直接取值:${date}(date是属性名)如果传来的是一个Date型数据会报错
${date?date} 2016-9-13
${date?time} 17:53:55
${date?datetime} 2016-9-13 17:53:55
6)null值的处理
如果直接取一个不存在的值(值为null)时会报异常
${aaa}
处理: ${aaa!”默认值”}或者${aaa! }代表空字符串
7)include标签
<#include “模板名称”>
项目中整合
1.在工程中引入相应的jar包
2.编写spring整合freemarket配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- freemarker的配置 -->
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
<property name="defaultEncoding" value="utf-8"></property>
</bean>
</beans>
3.方法:
请求的url:/genhtml
参数:无
返回值:ok (String, 需要使用@ResponseBody)
业务逻辑:
1)从spring容器中获得FreeMarkerConfigurer对象。
2)从FreeMarkerConfigurer对象中获得Configuration对象。
3)使用Configuration对象获得Template对象。
4)创建数据集
5)创建输出文件的Writer对象。
6)调用模板对象的process方法,生成文件。
7)关闭流。
4.controller代码
@Controller
public class HtmlGenController {
@Autowired
private FreeMarkerConfigurer freeMarkerConfigurer;
@RequestMapping("/genhtml")
@ResponseBody
public String genHtml()throws Exception {
// 1、从spring容器中获得FreeMarkerConfigurer对象。
// 2、从FreeMarkerConfigurer对象中获得Configuration对象。
Configuration configuration = freeMarkerConfigurer.getConfiguration();
// 3、使用Configuration对象获得Template对象。
Template template = configuration.getTemplate("hello.ftl");
// 4、创建数据集
Map dataModel = new HashMap<>();
dataModel.put("hello", "1000");
// 5、创建输出文件的Writer对象。
Writer out = new FileWriter(new File("D:/temp/term197/out/spring-freemarker.html"));
// 6、调用模板对象的process方法,生成文件。
template.process(dataModel, out);
// 7、关闭流。
out.close();
return "OK";
}
}