WebSphere记录警告消息“SRTServletRes W警告:无法设置标头。已经提交的响应“用于一个JSP请求。我稍后需要在代码中使用respone标头。我做了一些研究,并了解到Servlet正在尝试向输出流发送更多数据,但该流已经提交。我不明白为什么这只发生在这个特定的JSP上,因为这个Servlet代码适用于其他JSP。此页面未重定向,我收到响应,没有响应标头。
答案 0 :(得分:24)
提交响应时,表示至少已将头文件发送到客户端。
表示,在响应已提交时,您无法设置/更改标头。只要满足以下一个或多个条件,我们就会提交回复:
HttpServletResponse#sendRedirect()
已被召集。flush()
已在响应输出流上调用,无论是通过Servlet还是JSP。2K缓冲区限制可在appserver的配置中配置。
您需要重新排列代码逻辑,以便在提交响应之前仅设置标头。您应该永远使用JSP内部的 scriptlet 来设置/更改响应标头。您只应在继续链之前在Filter
中执行此操作,或在发送请求之前在页面控制器Servlet
中执行此操作。还要注意JSP包含文件都不会调用它们。