无法在JSP中设置标头。响应已经提交

时间:2010-01-08 19:31:21

标签: java jsp servlets websphere

WebSphere记录警告消息“SRTServletRes W警告:无法设置标头。已经提交的响应“用于一个JSP请求。我稍后需要在代码中使用respone标头。我做了一些研究,并了解到Servlet正在尝试向输出流发送更多数据,但该流已经提交。我不明白为什么这只发生在这个特定的JSP上,因为这个Servlet代码适用于其他JSP。此页面未重定向,我收到响应,没有响应标头。

1 个答案:

答案 0 :(得分:24)

提交响应时,表示至少已将头文件发送到客户端。

表示,在响应已提交时,您无法设置/更改标头。

只要满足以下一个或多个条件,我们就会提交回复:

  • HttpServletResponse#sendRedirect()已被召集。
  • 已经通过Servlet或JSP将超过2K写入响应输出。
  • 已写入<0>但小于2K flush()已在响应输出流上调用,无论是通过Servlet还是JSP。

2K缓冲区限制可在appserver的配置中配置。

您需要重新排列代码逻辑,以便在提交响应之前仅设置标头。您应该永远使用JSP内部的 scriptlet 来设置/更改响应标头。您只应在继续链之前在Filter中执行此操作,或在发送请求之前在页面控制器Servlet中执行此操作。还要注意JSP包含文件都不会调用它们。