Freemarker与spring整合的基本使用

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)根据配置对象获取模板对象

扫描二维码关注公众号,回复: 9334689 查看本文章

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;
	}
	
}
发布了205 篇原创文章 · 获赞 9 · 访问量 7944

猜你喜欢

转载自blog.csdn.net/weixin_43318134/article/details/104259238