Response响应问题

  

使用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文件






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值