最近在做项目,要做一个功能: 导出word试卷。
之前是有一个功能是查看试卷功能。但是需要把 试卷下载下来归档保存。
现在我们来分析一下: 既然我已经有了查看试卷功能。 要实现导出word . 就相当于把查看页面下载保存成word的格式。
我们知道 浏览器解析 后台给的视图,这个视图 可以是 html 又或者是 word, PDF (什么,兄弟,你你没有见过 pdf 和word,那你可以去 一些电子元器件手册网站看看手册,就知道你看的是pdf)。
现在我们已经知道,我们需要 后台给的视图的 word格式的,而不是html。好,我们已经把问题拆解开来了。
现在我们需要 把视图下载下来。 使用response 设置head 信息。是响应是下载,而不是浏览器给你解析。
好了,我们现在已经把问题解决了。 来看看我们怎么解决问题的。
- 服务器给浏览器的视图不是html而是 word
- 服务器响应浏览器的不是发送视图而是下载视图。
。现在我们开始看代码是如何实现:
-
把 jsp 页面的
<%@ page contentType="application/msword; charset=UTF-8" pageEncoding="UTF-8" %>
contentType 就是我们 决定 返回视图的格式。
看这里,查看更多 contentTyp 的 可使用的值 -
我们控制器要做 response head 的设置。
我们之前查看视图的控制器:
@requestMapping (value="toView")
public string toView(Paper paper,model model){
service //此处伪代码
return "your view ";
}
我们做导出的 控制器:
@requestMapping(value="exportWord")
public string exportWord(Paper paper ){
service // 此处伪代码
response.reset();
response.setContentType("application/msword; charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" +new String(name+".doc") .getBytes("gb2312")."ISO8859-1");
return "your view";
}
到现在就基本解决了,如何实现导出word 功能。
java也有导出word 的组件 apache 的 poi。
但是这个好像导出的时候 是需要模版的。
一下是一些参考资料(值得看看):
1.response.setHeader()的用法
2.HTTP协议中的ContenType类型大全
3.HTTP响应实例教程 —— 基本使用、生成Cookie、返回视图、JSON/JSONP、文件下载及重定向
4.Java 实现HTML富文本导出至word完美解决方案