java层将outputstream输出到jsp报错:getOutputStream() has already been called for this response

本文主要解决了在Java控制器层使用`response.getOutputStream()`向JSP传递数据时遇到的错误。错误提示为'getOutputStream() has already been called for this response'。问题的关键在于Java层已经获取了输出流,而尝试在JSP中再次调用。解决方案是通过在Java代码中调用`out.clear()`来清除输出流,从而避免冲突。
摘要由CSDN通过智能技术生成

注意,我这里的报错情况是输出流 outputstrea是在java层生成的,controller中通过response.getOutputStream(); 获取jsp输出流,再输出到jsp页面,下载文件。

如果下载文件的代码是在jsp页面的,请参考其他百度结果。


Controller:

public OutputStream downloadXLSTargetFile(HttpServletResponse response,String fileName)
	{
		File f = null;
		if(fileName != null && !"".equals(fileName)){
			f = new File(fileName);
		}
		
		//导出文件
		try {
			response.reset();
			response.setContentType("application/x-msdownload");
			response.setHeader("Content-Disposition",
					"attachment; filename=" + f.getName());
			OutputStream out = response.getOutputStream();
			return out;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}


上面方法返回jsp输出流,将需要下载的文件流赋值给上面这个out变量,然后就返回jsp页面

@Re
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值