java.lang.IllegalStateException是什么错误?
java.lang.IllegalStateException异常产生的原因及解决办法 :
错误类型大致为以下几种:
java.lang.IllegalStateException:Cannot forward a response that is already committed 。
IllegalStateException:response already commited 。
IllegalStateException:getOutputStream() has already been called for this request
…………
错误原因:该异常表示,当前对客户端的响应已经结束,不能在响应已经结束(或说消亡)后再向客户端(实际上是缓冲区)输出任何内容。
具体分析:
首先解释下flush(),我们知道在使用读写流的时候数据先被读入内存这个缓冲区中, 然后再写入文件,但是当数据读完时不代表数据已经写入文件完毕,因为可能还有一部分仍未写入文件而留在内存中。
这时调用flush()方法就会把缓冲区的数据强行清空输出,因此flush()的作用就是保证缓存清空输出。response是服务端对客户端请求的一个响应,其中封装了响应头、状态码、内容等,服务端在把response提交到客户端之前,会向缓冲区内写入响应头和状态码。
然后将所有内容flush。这就标志着该次响应已经committed(提交)。对于当前页面中已经committed(提交)的response。
就不能再使用这个response向缓冲区写任何东西(注:同一个页面中的response.XXX()是同一个response的不同方法,只要其中一个已经导致了committed,那么其它类似方式的调用都会导致 IllegalStateException异常)。
java.lang.IllegalStateException异常产生的原因及解决办法如下:
错误类型大致为以下几种:
java.lang.IllegalStateException:Cannot forward a response that is already committed 。
IllegalStateException:response already commited 。
IllegalStateException:getOutputStream() has already been called for this request
…………
错误原因:该异常表示,当前对客户端的响应已经结束,不能在响应已经结束(或说消亡)后再向客户端(实际上是缓冲区)输出任何内容。
编程工具
Eclipse:一个开放源代码的、基于Java的可扩展开发平台。
NetBeans:开放源码的Java集成开发环境,适用于各种客户机和Web应用。
IntelliJ IDEA:在代码自动提示、代码分析等方面的具有很好的功能。
MyEclipse:由Genuitec公司开发的一款商业化软件,是应用比较广泛的Java应用程序集成开发环境。
EditPlus:如果正确配置Java的编译器“Javac”以及解释器“Java”后,可直接使用EditPlus编译执行Java程序。
一般来说无效状态异常是因为你弄错了调用一个方法的流程,比如在 JSP / Servlet 编程中,服务器已经开始把数据发回客户端了,你却想改动字符集 encoding 参数,这个就是错误,因为开始回复数据到客户端后就不能再修改任何 Http header 内容,它们已经发出去了,无法再修改了。
推荐于2018-02-27
父类:IllegalComponentStateException
在不合理或不正确时间内唤醒一方法时出现的异常信息。换句话说,即 Java 环境或 Java 应用不满足请求操作。
2013-07-29
原因:
因为页面出现了多个输出流所至,在多个<%//使用了outputStream %>语句之间不能