Struts - Beispiel für einen benutzerdefinierten Ausnahmebehandler <global-exception>

Struts - Beispiel für einen benutzerdefinierten Ausnahmebehandler

Laden Sie dieses Beispiel herunter -Struts-Global-Exception-Example.zip

Im Struts-Framework wird<global-exception> verwendet, um Ihre benutzerdefinierte Fehlerseite anstelle der standardmäßigen klassischen HTTP-Status 500-Fehlerseite anzuzeigen:

struts-global-exception-1

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.