Response响应问题 使用HttpServletResponse addHeader() 或setHeader()方法:

  

使用HttpServletResponse addHeader() 或setHeader()方法:

  • setHeader(name, value):如果Header中没有定义则添加,如果已定义则用新的value覆盖原用value值。
  • addHeader(name, value):如果Header中没有定义则添加,如果已定义则保持原有value不改变。

java后台返回给前台excel文件,通过response响应给jsp问题

1. resp.reset();  //清空response的缓存

    resp.setContentType("application/vnd.ms-excel;charset=utf-8");  //设置jsp的内容类型,为excel表格,编码格式为utf-8

 resp.setHeader("Content-Disposition", "attachment;filename="+ new String((pathName + " " + time + ".xls").getBytes(), "iso-8859-1")); //Content-Disposition中指定的类型是文件的扩展名,并且弹出的下载对话框中的文件类型图片是按照文件的扩展名显示的,点保存后,文件以filename的值命名,保存类型以Content中设置的为准。new String((pathName + " " + time + ".xls").getBytes(), "iso-8859-1"),这一段是因为filename中有中文,为了不乱码。

注意:在设置Content-Disposition头字段之前,一定要设置Content-Type头字段,设置好响应的格式,然后再用流写出,如:OutputStream webOut = resp.getOutputStream();workBook.write(webOut);webOut.close(); jsp中,Excel导出是无法用ajax的,只能使用window.location.href,如果非要使用ajax发送请求,可参考/cps_show/src/main/webapp/realTMConfigSend.jsp

2.使用resp.addHeader("Content-disposition","attachment;filename=" + new String((pathName + " " + time).getBytes("GBK"), "ISO8859_1") + ".xlsx");再用流输出

一下子看到resp.setContentType有点陌生,但其实学servlet的时候就有学过:

一般在Servlet中,习惯性的会首先设置请求以及响应的内容类型以及编码方式:
response.setContentType("text/html;charset=UTF-8");

request.setCharacterEncoding("UTF-8");

简单介绍一下常见ContentType的类型及含义:

response.setContentType("text/html; charset=utf-8"); html
.setContentType("text/plain; charset=utf-8"); 文本
text/javascript json数据

application/xml  xml数据

application/vnd.ms-excel  excel文件






猜你喜欢

转载自blog.csdn.net/today__tomorrow/article/details/80838487