1.直接上代码,这里的请求还是spring mvc请求,如果不懂的可以上网自己找一些相关的只是,代码如下:
private Configuration configuration=null;
@ResponseBody
@RequestMapping(value = "/stats3-{type}")
public void getDocYanBao( String ordNO,HttpServletRequest request, HttpServletResponse response, HttpSession session) {
configuration = new Configuration();
ZhenBao zhenBao = policyServcie.getYanbaoById(ordNO);//获取保存的数据
configuration.setDefaultEncoding("UTF-8");
String brand=zhenBao.getBrand();
String series=zhenBao.getSeries();
//判断是否为空
try {
//生成doc文档中的内容
Map<String, Object> dataMap = new HashMap<String, Object>();
if(zhenBao.getContractNO()==null){
dataMap.put("contractNO","");
}else{
dataMap.put("contractNO", zhenBao.getContractNO());
}
configuration.setClassForTemplateLoading(this.getClass(), "/template"); // FTL文件所存在的位置
Template template = configuration.getTemplate("moban.ftl");
File outFile = new File(request.getSession().getServletContext().getRealPath("/template/success.doc"));
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));
template.process(dataMap, out);
// 下载本地文件
String fileName ="doc名字-明细.doc".toString(); // 文件的默认保存名字
fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
// 读到流中
InputStream inStream = new FileInputStream(request.getSession().getServletContext().getRealPath("/template/success.doc"));// 文件的存放路径
// 设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
// 循环取出流中的数据
byte[] b = new byte[100];
int len;
try {
while ((len = inStream.read(b)) > 0)
response.getOutputStream().write(b, 0, len);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
out.close();
//删除文件
outFile.delete();
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error(e, e);
}
}
至此,代码结束,感兴趣的小伙伴们可以自己尝试写一下。
这里的Configuration和Template引入的是freemarker.template.Configuration和freemarker.template.Template;
我这里用的maven,所以在线下载的jar文件,如果不是maven项目的话,可以在网上找一下相关的jar文件。