Error Pages
Leider können wir es nicht völlig ausschließen, dass in unseren Seiten ein Fehler auftritt. In diesem Fall ist es unschön, wenn der User die blaue Tomcat Error-Seite mit dem Stacktrace angezeigt bekommt. Wir können daher wie bei jedem Server Fehlerseiten konfigurieren.
Für jede JSP einzeln können wir eine Fehlerseite über die Page-Direktive bestimmen.
Code: /bsp/kap4/make_local_error.jsp
<%@ include file="/template/head.jspf"%>
Diese Seite verursacht einen Fehler
<%
doError= !doError;
if (doError) out.print(10/0);
%>
Reload me!
<%@ include file="/template/tail.jspf"%>
<%!
private boolean doError=true;
%>
Wir können Fehlerseiten auch systemweit im Deployment-Descriptor (web.xml) definieren.
<error-page>
<location>/error.jsp</location>
</error-page>
Anmerkung: Das funktioniert mit Tomcat 4.1.18 nicht, obwohl es sollte. Verwenden Sie eine Konfiguration mit oder wie unten angegeben.
Dabei für eine differenziere Fehlerbehandlung können wir sowohl nach HTTP-Status Codes:
<error-page>
<error-code>404</error-code>
<location>/error_404.jsp</location>
</error-page>
als auch nach Java-Exceptions differenzieren:
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
Gebe Sie bei einfach den Klassennamen der Ausnahme an, die Sie in dieser Seite behandeln wollen. Alle davon abgeleiteten Klassen werden ebenfalls erfasst.
Die Fehlerseite (error.jsp) ist eine normale JSP, in die Sie den Tag:
02 <%@ page isErrorPage="true" %>
einfügen. Der Container stellt dann ein exception-Objekt bereit, das Sie zur Fehlerbehandlung und -aufzeichnung nutzen können. Es handelt sich um die Exception, die in der fehlerhaften Seite geworfen wurde. In unserem Fall geben wir den Fehler einfach aus: <%=exception%>
Code: /bsp/kap4/error_global.jsp
<%@ page isErrorPage="true" %>
<%@ include file="/template/head.jspf"%>
Error Global
Hier ist die globale Error-Page; sie muss in der web.xml konfiguriert sein.
Sie k?nnen sie mit
make_global_error.jsp
aufrufen.
Das exception-Objekt steht zur Verf?gung:
<%=exception%>
<%