2010-01-08 80 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包含文件調用。