FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
一丶要使用FreeMarker你必须添加以下jar包:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
二丶到spring容器中配置FreeMarker
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!--设置模板的位置 -->
<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
<!--设置config的默认编码 -->
<property name="defaultEncoding" value="UTF-8" />
</bean>
三丶FreeMarker的使用:
package com.taotao.portal.service.impl;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import com.taotao.common.pojo.TaotaoResult;
import com.taotao.pojo.TbItem;
import com.taotao.portal.service.ItemDescService;
import com.taotao.portal.service.ItemParamService;
import com.taotao.portal.service.ItemService;
import com.taotao.portal.service.StaticPageService;
import freemarker.template.Configuration;
import freemarker.template.Template;
@Service
public class StaticPageServiceImpl implements StaticPageService {
@Autowired
private ItemService itemService;
@Autowired
private ItemDescService descService;
@Autowired
private ItemParamService paramService;
@Autowired
private FreeMarkerConfigurer configurer;
@Value("${Page_Save_Path}")
private String Page_Save_Path;
@Override
public TaotaoResult getHtmlPage(Long itemid) throws Exception {
// TODO Auto-generated method stub
TbItem item = itemService.getItemById(itemid);
String param = paramService.getItemParam(itemid);
String desc =descService.getDesc(itemid);
//创建一个configuration对象
Configuration configuration = configurer.getConfiguration();
//configuration.setDefaultEncoding("utf-8");
//设置取用的模板
Template template = configuration.getTemplate("item.ftl");
//创建模板所需要的数据集,可以是任何东西
Map root = new HashMap<>();
root.put("item", item);
root.put("itemDesc", desc);
root.put("itemParam", param);
Writer out = new FileWriter(new File(Page_Save_Path+itemid+".html"));
//调用模板的process方法创建静态对象!
template.process(root, out);
out.flush();
out.close();
return "ok";
}
}
FreeMarker中文版API网站