WebSphere protokolliert die Warnmeldung "SRTServletRes W WARNING: Header kann nicht festgelegt werden. Antwort bereits für eine JSP-Anfrage festgeschrieben. Ich brauche die Respone Header später in meinem Code. Ich habe etwas recherchiert und verstanden, dass Servlet versucht, mehr Daten an den Ausgabestream zu senden, aber der Stream wurde bereits festgeschrieben. Ich habe nicht verstanden, warum dies nur mit dieser bestimmten JSP passiert, da dieser Servlet-Code für andere JSPs funktioniert. Diese Seite wird nicht umgeleitet und ich bekomme die Antwort ohne Antwort-Header zurück.
Wenn eine Antwort festgeschrieben wird, bedeutet dies, dass mindestens die Header bereits an die Clientseite gesendet wurden. Sie können Header nicht festlegen / ändern, wenn die Antwort bereits festgeschrieben wurde, weil es zu spät ist.
Eine Antwort wird immer dann ausgeführt, wenn eine oder mehrere der folgenden Bedingungen erfüllt sind:
HttpServletResponse#sendRedirect()
wurde aufgerufen. flush()
wurde im Antwortausgabe-Stream entweder von Servlet oder JSP aufgerufen. Das 2K-Pufferlimit ist in der Appserver-Konfiguration konfigurierbar.
Sie müssen die Codelogik neu anordnen, sodass nur die Header festgelegt werden, bevor die Antwort festgeschrieben wird. Sie sollten nie die Antwortheader mithilfe von Scriptlets in / halb einer JSP festlegen / ändern. Das sollten Sie nur in Filter
tun, bevor Sie die Kette fortsetzen, oder in einem Seitencontroller Servlet
, bevor Sie die Anfrage senden. Achten Sie auch darauf, dass keiner von ihnen von einer JSP Include-Datei aufgerufen wird.