简单理解Java中的输出流异常

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

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

例如在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开发者的新选择
责任编辑:彭凡 来源: ITPUB空间
相关推荐

2011-11-28 09:25:36

Java输入输出

2023-12-11 14:19:00

Java程序异常

2009-06-12 18:54:46

异常程序开发

2023-05-28 13:09:47

Java异常应用

2015-12-28 11:25:51

C++异常处理机制

2020-12-01 08:47:36

Java异常开发

2013-06-05 10:11:20

索引器C#

2013-01-06 15:21:29

2009-06-11 10:25:36

Java GC幽灵引用

2019-11-21 08:51:56

Java异常控制流

2013-04-07 10:01:26

Java异常处理

2020-07-02 22:42:18

Java异常编程

2009-06-25 14:05:40

Java应用技巧

2022-01-19 09:00:00

Java空指针开发

2021-07-15 23:16:09

IO异常排查

2014-03-12 10:19:54

iOS对象

2009-04-13 13:21:58

DB2编目catalog

2012-02-16 10:53:10

Java

2015-11-02 17:20:00

Java弱引用

2021-01-21 14:06:57

云计算
点赞
收藏

51CTO技术栈公众号