1. 添加依赖
spring要与freemarker整合的话,需要两个包,一个是freemarker的jar包,另一个是spriing-context-support的Jar包,依赖如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
其实,一般我们在开发中 spriing-context-support的依赖都会添加的,所以主要是添加freemarker的依赖即可。
2. 配置文件
2.1 spring配置freemarker
<!-- 配置freemarker -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- 配置模板文件目录 -->
<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
<!-- 配置生成的文件的字符集编码 -->
<property name="defaultEncoding" value="UTF-8" />
</bean>
2.2 配置目的目录
新建一个properties文件,用于保存目的目录,例如;
pageDir=d:\\item\\
2.3 准备模板文件
模板文件的目录要在spring配置的目录下
如图:
3. 代码编写
操作步骤:
1)注入freeMarkerConfigurer与pageDir
2)注入mapper
3)通过freeMarkerConfigurer获取配置对象Configuration
4)根据配置对象获取模板对象
5)创建数据模型
6)创建目标文件的输出流对象
7)写数据到目标文件
@Service(timeout=50000)
public class ItemPageServiceImpl implements ItemPageService{
@Resource
private TbGoodsMapper goodsMapper;
@Resource
private TbGoodsDescMapper goodsDescMapper;
@Resource
private FreeMarkerConfigurer freeMarkerConfigurer;
@Value("${pageDir}")
private String pageDir;
@Override
public boolean genItemHtml(Long goodsId) {
Writer out = null;
try {
// 获取配置对象
Configuration configuration = freeMarkerConfigurer.getConfiguration();
// 获取模板对象
Template template = configuration.getTemplate("item.ftl");
// 创建数据模型
Map dataModel = new HashMap();
TbGoods goods = goodsMapper.selectByPrimaryKey(goodsId);
dataModel.put("item", goods);
// 创建目标文件的输出流对象
out = new FileWriter(pageDir + goodsId + ".html");
// 写数据到目标文件
template.process(dataModel,out);
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(null != out){
try {
out.close();
} catch (IOException e) {
System.out.println("关闭流文件失败");
}
}
}
return false;
}
}