本文将帮助大家简单理解Java中的java.lang.IllegalStateException异常,这一异常经常出现在输出流作业中。

咱们在做文件上传或许下载,或许过滤等操作时,可能要用到页面的输出流.

简略了解Java中的输出流反常(java 异常输出)  Java 输出流 异常 第1张

例如在JSP运用:

response.reset();
response.setContentType(”application/vnd.ms-excel”);
OutputStream s = response.getOutputStream();  

抛出反常:

ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service()
for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream()
has already been called for this response

从网上找了下材料,归纳一下原因剖析:

这是WEB容器生成的servlet代码中有out.write(””),这个和JSP中调用的response.getOutputStream()发生抵触。即Servlet标准阐明,不能既调用 response.getOutputStream(),又调用response.getWriter(),不管先调用哪一个,在调用第二个时分应会抛出 IllegalStateException,由于在jsp中,out变量是经过response.getWriter得到的,在程序中既用了response.getOutputStream,又用了out变量,故呈现以上过错。

解决方案:

1.在程序中增加:
out.clear();
out = pageContext.pushBody();
就可以了;

2,不要在%][%之间写内容包含空格和换行符

3,在页面写入图片的时分,需求

flush()
 OutputStream utput=response.getOutputStream();
 output.flush();

4,在页面确认写入

【修改引荐】

  1. Java开发者需求留意的十条规律
  2. Java前史回忆:开发人员十大问答
  3. 散步云端 Java开发者的新挑选
转载请说明出处
知优网 » 简略了解Java中的输出流反常(java 异常输出)

发表评论

您需要后才能发表评论