【发布时间】:2020-07-20 17:04:12
【问题描述】:
我在 jsp 文件中使用了 write bean 标签,但是当我尝试使用响应对象创建输出流时,它会给出 IllegalStateException。
创建输出流并正确运行代码的解决方案是什么。
提前致谢
【问题讨论】:
我在 jsp 文件中使用了 write bean 标签,但是当我尝试使用响应对象创建输出流时,它会给出 IllegalStateException。
创建输出流并正确运行代码的解决方案是什么。
提前致谢
【问题讨论】:
ServletReponse对象提供了两种方法,getWriter输出文本数据,getOutputStream输出二进制数据。
只能调用其中一个,否则会抛出 IllegalStateException。
在 JSP 中,翻译后的编码在需要输出任何文本时调用 getWriter,因此会出现错误。
要在 JSP 文件中调用 response.getOutputStream,您必须确保在调用之前不需要写入任何文本,因此您必须删除 <% %> 标记之外的所有文本,甚至是 new line 字符在 JSP 指令之间。
【讨论】:
getOutputStream,因为 JSP 文件内部已经调用了 getWriter。
getWriter 而不是 getOutputStream,或者,如果您确实需要在 Action 对象中输出二进制数据,则需要确保您的 JSP 没有'在将响应传递给 Action 对象之前不打印任何内容。