Java 已在第二个servlet请求中为此响应调用getOutputStream()

Java 已在第二个servlet请求中为此响应调用getOutputStream(),java,spring,grails,servlets,groovy,Java,Spring,Grails,Servlets,Groovy,你好,我有一个问题,我不能把我的手指 servletResp.setHeader("Expires","0") servletResp.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0") servletResp.setHeader("Pragma","public") servletResp.setHeader("Content-Disposition","inline; filename=invoice

你好,我有一个问题,我不能把我的手指

servletResp.setHeader("Expires","0")
servletResp.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0")
servletResp.setHeader("Pragma","public")
servletResp.setHeader("Content-Disposition","inline; filename=invoice.pdf")

servletResp.setContentType("application/pdf")
servletResp.setContentLength( outStream.size())
servletResponseStream.write(outStream.toByteArray())
outStream.close()
servletResponseStream.flush()
servletResponseStream.close()
在上面的代码中,假设outStream有一个读入pdf文件。代码在第一次请求时呈现良好。在第二次请求时,我得到:

java.lang.IllegalStateException: getOutputStream() has already been called for this response
输出流是什么并不重要。即使我创建了一个全新的字节[2],并写入相同的结果。在第一次请求时,服务器响应良好。在第二天,发生了上述异常


欢迎提供任何帮助

问题中的代码不会调用
getOutputStream()
,也不会执行任何可能导致调用它的操作。因此,我认为异常的原因是在其他地方


底线是,对于给定的响应,您只能调用一次
ServletResponse.getOutputStream()
和/或
getWriter()
。在某个地方,您的应用程序多次调用
getOutputStream
getWriter

outStream.close已关闭您的流响应,请提供行号等code@r0ast3d不,
outStream
看起来像是一个
ByteArrayOutputStream
,未连接到servlet输出流。异常发生在哪一行?您使用的是什么Web服务器?请提供关于这一问题的更多资料。