2010-01-08 28 views
7

WebSphere记录警告消息“SRTServletRes W警告:无法设置标题。对于一个JSP请求已经提交的响应“。我后来在我的代码中需要响应头文件。我做了一些研究并了解Servlet正在尝试将更多数据发送到输出流,但流已经被提交。我不明白为什么只有这个特定的JSP才会发生这种情况,因为这个Servlet代码对于其他JSP工作正常。这个页面没有被重定向,我得到的响应没有响应头。无法在JSP中设置标题。已答复的响应

回答

20

当提交响应时,意味着至少头文件已经发送到客户端。当响应已被提交时,您无法设置/更改标头,因为太迟了。

每当下列一个或多个条件被满足的响应将致力于:

  • HttpServletResponse#sendRedirect()被调用。
  • 通过Servlet或JSP已经将2K以上的数据写入响应输出。
  • 已写入大于0K但小于2K的文件flush()已通过Servlet或JSP在响应输出流上调用。

的2K缓冲器限制是在应用程序服务器的配置configureable。

您需要重新排列代码逻辑,以便在提交响应之前仅设置标头之前的。你应该从来没有设置/更改响应头使用scriptlets里面/中途JSP。在分发请求之前,您应该在继续链接之前或在页面控制器Servlet之前在Filter中执行此操作。还要注意,它们都不被JSP包含文件调用。

相关问题