Struts - Beispiel für einen benutzerdefinierten Ausnahmebehandler
Laden Sie dieses Beispiel
Im Struts-Framework wird<global-exception> verwendet, um Ihre benutzerdefinierte Fehlerseite anstelle der standardmäßigen klassischen HTTP-Status 500-Fehlerseite anzuzeigen:
Die Standard-Fehlerseite sieht hässlich und überhaupt nicht professionell aus. Darüber hinaus ist die Fehlermeldung so beschreibend, dass die Systeminformationen an den Endbenutzer weitergegeben werden.
1. + Standardausnahmehandler
Hier ist ein Beispiel für<global-exception> mit Standardausnahmehandler, das in "struts.config.xml" deklariert ist, um die Standard-HTTP 500-Fehlerseite durch Ihre benutzerdefinierte beschreibende Fehlerseite zu ersetzen.
//... //...
Oben wird der Standard-Struts-Ausnahmebehandler "org.apache.struts.action.ExceptionHandler" aufgerufen, wenn eine IOException von einer Aktion ausgelöst wird, und an die Dateierror.jspweitergeleitet. Der Schlüssel ist ein Schlüssel in der Eigenschaftendatei Ihrer Nachrichtenressourcen.
Common.properties
#common module error message error.global.mesage = Ooooppps... Sometime wraong in this site, please come back later
error.jsp
Struts Global Exception Example
2. + benutzerdefinierter Ausnahmehandler
In der Standardausnahmebehandlung können Sie nicht steuern, wie mit der Ausnahme umgegangen werden soll. In den meisten Fällen müssen Sie die Ausnahme möglicherweise zur weiteren Analyse protokollieren. Dazu benötigen Sie einen benutzerdefinierten Ausnahmehandler, um alle Ausnahmen in einem anderen Datenspeicher wie Dateisystem oder Datenbank zu protokollieren.
Hier ist ein Beispiel für einen benutzerdefinierten Ausnahmebehandler, der für "java.lang.Exception" konfiguriert werden soll, damit für jede von Action ausgelöste Ausnahme aufgerufen wird. Um einen benutzerdefinierten Ausnahmebehandler zu erstellen, müssen Sie die Unterklasse "org.apache.struts.action.ExceptionHandler" eingeben und die Ausführungsmethode überschreiben.
MyCustomExceptionHandler.java
package com.example.common.exception; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ExceptionHandler; import org.apache.struts.config.ExceptionConfig; public class MyCustomExceptionHandler extends ExceptionHandler{ private static final Logger logger = Logger.getLogger(MyCustomExceptionHandler.class); @Override public ActionForward execute(Exception ex, ExceptionConfig ae, ActionMapping mapping, ActionForm formInstance, HttpServletRequest request, HttpServletResponse response) throws ServletException { //log the error message logger.error(ex); return super.execute(ex, ae, mapping, formInstance, request, response); } }
//... //...
Wenn oben eine Ausnahme von Action ausgelöst wird, ruft sie dieexecute()-Methode Ihres benutzerdefinierten Ausnahmehandlers MyCustomExceptionHandler anstelle des Standardausnahmehandlers auf.
Referenz
-
Struts Exception Handler -http://struts.apache.org/1.x/userGuide/building_controller.html