Ich habe eine JSP-Seite (in Tomcat), die JSP-Tags verwendet, um einige Daten abzurufen. Diese JSP-Tags können jedoch Ausnahmen auslösen (z. B. wenn Parameterwerte ungültig sind). Jetzt möchte ich eine bessere Fehlerbehandlung für diese Situation implementieren. Es ist mir nicht gelungen, einen Ausnahmebehandler zu finden, der GLOBALLISCH spezifiziert (die Fehlerseitendefinitionen in web.xml funktionieren nicht für Ausnahmen, die in einer JSP ausgelöst werden). Die einzige Möglichkeit, die ich bisher gefunden habe, ist die Angabe eines errorPage-Attributs in der Kopfzeile aller JSP-Dateien.So legen Sie HTTP-Statuscode in JSP-Fehlerhandlern fest
<% page errorPage="/WEB-INF/jsp/errors/500.jsp" %>
Ziemlich nervig, dies für alle JSPs zu tun, aber akzeptabel. Aber nicht akzeptabel ist die Tatsache, dass die Fehlerseite immer mit einem HTTP-Statuscode von 200 ausgeliefert wird. Ich möchte stattdessen eine 500. Ich habe versucht, ein Servlet als errorPage anstelle einer JSP und versucht, response.setStatus (500) und auch response.sendError (500) zu setzen, aber beide Aufrufe werden ignoriert. So dieser Code druckt „200“ zwei Mal und ich habe keine Ahnung, warum:
System.out.println(response.getStatus());
response.setStatus(500);
System.out.println(response.getStatus());
Die Frage ist also: Wie kann ich den HTTP-Statuscode in JSP Fehler-Handler gesetzt?
Wie ich schrieb: Fehler-Seite Definitionen in web.xml funktionieren nicht für JSPs. Ich habe bereits genau diese Zeilen in web.xml, um in Servlets ausgelöste Ausnahmen abzufangen, und es funktioniert dort gut, aber mein Problem ist die Ausnahmebehandlung in JSP, nicht in Servlet. – kayahr