在开发中我们经常会碰见一种需求是生成word。而Freemarker刚好有这个能力,下面介绍详细的步骤。
- 第一步我们需要编辑好我们需要的模版
- 将编辑好的模版保存为xml形式的后缀
- 更改xml后缀为ftl后缀
- 将ftl复制到我们的应用中
- freemarker处理
第五步的详细代码如下:
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class WordFreemarker extends HttpServlet {
private Configuration cfg;
@Override
public void init() throws ServletException {
cfg = new Configuration();
cfg.setServletContextForTemplateLoading(getServletContext(), "/WEB-INF/templates/");
cfg.setDefaultEncoding("UTF-8");
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Template template = cfg.getTemplate("word-model.ftl");
Map root = new HashMap();
root.put("title", "我是title");
root.put("body", "我是大body");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition","attachment;filename=model.doc");
try {
template.process(root, response.getWriter());
} catch (TemplateException e) {
e.printStackTrace();
}
}
}