Kann Header nicht in JSP setzen. Antwort bereits festgelegt

8

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.

    
Susmitha Pandi 08.01.2010, 19:31
quelle

1 Antwort

21

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.
  • Mehr als 2K wurden bereits in die Antwortausgabe geschrieben, entweder von Servlet oder JSP.
  • Mehr als 0K aber weniger als 2K wurden geschrieben und 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.

    
BalusC 08.01.2010, 21:32
quelle

Tags und Links