在JSP使用:
response.reset();
response.setContentType("application/vnd.ms-excel");
OutputStream os = response.getOutputStream();
抛出异常:
ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
原因:1,是web容器生成的servlet代码中有out.write(""),这个和JSP中调用的response.getOutputStream()产生冲突.
即Servlet规范说明,不能既调用 response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,
在调用第二个时候应会抛出 IllegalStateException,因为在jsp中,out变量是通过response.getWriter得到的,
在程序中既用了 response.getOutputStream,又用了out变量,故出现以上错误。
解决方案:在程序中添加:
out.clear();
out = pageContext.pushBody();
就可以了;
2,不要在%><%之间写内容包括空格和换行符
3,在页面写入图片的时候,需要flush()
OutputStream output=response.getOutputStream();
output.flush();
4,在页面确定写入,<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
本文介绍在JSP中使用response.getOutputStream()进行文件导出时遇到的IllegalStateException异常及解决办法,包括清理输出流、避免混合使用输出流和字符流、确保页面头部的正确配置。
1924

被折叠的 条评论
为什么被折叠?



