解决getWriter() has already been called for this response异常
来源:互联网 发布:java贴吧 编辑:程序博客网 时间:2024/05/29 18:34
近期,查看公司应用日志系统error错误信息时,发现了大量的nested exception is java.lang.IllegalStateException: getWriter() has already been called for this response异常。这个错误以前见到过,也解决过。于是想着趁有点空闲,总结下该错误。如有不对,望各位多包容,欢迎交流。
一、应用日志文件中的错误信息
原因分析
IllegalStateException: getWriter() has already been called for this response
从字面意思不难得出错误原因:HttpServletResponse中的PrintWriter已经被手动调用过了。所以当servlet执行到方法结果处理逻辑时,需要将返回值输出到writer中去,这时发现PrintWriter已经被调用过。于是servlet认为这是使用混乱的逻辑错误,于是抛出错误。
根本原因:在Controller接口方法中,既手动调用PrintWriter向客户端输出内容,又设置了方法返回值。导致servlet需要两次将结果通过PrintWriter输出到客户端,结果报错。
结果:程序正常返回结果,控制台出现异常。
(返回结果中编码问题,不在本文讨论范围,请忽略)
源码佐证
二、扩展验证附验证结果
验证PrintWriter输出流flush,无返回值
结果:程序正常返回结果,控制台无异常。
(返回结果中编码问题,不在本文讨论范围,请忽略)
调用ServletOutputStream输出流flush, 无返回值
结果:程序正常返回结果,控制台无异常。
调用ServletOutputStream输出流flush,又return 返回值
结果:程序返回结果不正常,控制台无异常。
不仅ServletOutputStream输出流中的内容被发送到客户端,而且方法返回结果也输出到客户端。
- 解决getWriter() has already been called for this response异常
- struts2 java.lang.IllegalStateException: getWriter() has already been called for this response(异常解决)
- getWriter() has already been called for this response异常(100%解决)
- getWriter() has already been called for this response 的解决办法
- getWriter() has already been called for this response 的解决办法
- getWriter() has already been called for this response 的解决办法
- servlet getWriter() has already been called for this response
- getWriter() has already been called for this response的解决方法
- getWriter() has already been called for this response
- getWriter() has already been called for this response的问题
- getWriter() has already been called for this response
- getWriter() has already been called for this response 的解决办法
- getWriter() has already been called for this response错误
- 异常解决方案:IllegalStateException: getWriter() has already been called for this response
- spring boot getWriter() has already been called for this response解决
- getOutputStream() has already been called for this response 异常处理
- 转异常getOutputStream() has already been called for this response
- getOutputStream() has already been called for this response异常
- Spring的ApplicationContext
- HttpClient
- linux操作系统安装
- SQL复杂查询练习
- 图像增强:频域
- 解决getWriter() has already been called for this response异常
- 【主席树】BZOJ3524(Poi2014)[Couriers]题解
- shiro真正项目中的实战应用核心代码!!!
- 顺时针打印矩阵
- 450. Delete Node in a BST
- 第一篇博文
- .net 使用 [Ajax.AjaxMethod()]方法
- P2P原理及UDP穿透简单说明
- kendo ui grid 合計