eViL_oNe
09.07.2005, 01:45
Hallo (schon das zweite Prob am gleichen Tag, son scheiss ;) )
in meiner Webapp habe ich eine Helper Klasse für Servlets definiert, die unter anderem eine schlichte doError-Methode anbietet, die mit Hilfe von forward() vom RequestDispatcher auf eine Standard-JSP-Fehlerseite umleitet.
Jetzt ist mir aufgefallen (ich hätte wohl GENAUER die servlet-api studieren sollen ;) ), dass forward() keineswegs nach dem Dispatch-Vorgang die Abarbeitung im Servlet abbricht, wie ich das von Location: <newLocation> im HTTP Header gewohnt bin, sondern munter im Code weitermacht
schauen wir uns mal einen kleinen Codeabschnitt aus einem Servlet an, der so nicht korrekt ist:
//...
if ( something )
{
helper.doError( "Fehler1" ); // forward auf Fehlerseite
}
// weiterer Code
if ( something2 )
{
helper.doError( "Fehler2" ); // forward auf Fehlerseite
}
falls beide if-Statements zutreffen, gibt es beim zweiten doError eine IllegalStateException, da durch das erste Forward bereits Ausgabe betrieben wurde.
Natürlich könnte man hingehen und die beiden if-Abfragen verschachteln, so dass garantiert ist, dass nur ein einziges Mal doError aufgerufen wird - ob dies zu einer besseren Übersichtlichkeit führt, sei mal hier dahingestellt.
Bevor ich jetzt aber alle 38 Referenzen auf die Methode in meinem Projekt überprüfe, würde ich gerne wissen, ob es nicht eine Möglichkeit gibt, den Programmlauf (d.h. das Servlet) nach dem ersten forward zu beenden, ähnlich wie System.exit(exitCode) in normalen Java Apps.
Die JSP Seiten, auf die ich mit Hilfe von forward dispatche, bilden die Präsentationsschicht und den absoluten Endpunkt - danach braucht nix mehr gemacht zu werden - abgesehen vielleicht von einem finalize(), um die Datenbankverbindung zu trennen ;)
Any info?
in meiner Webapp habe ich eine Helper Klasse für Servlets definiert, die unter anderem eine schlichte doError-Methode anbietet, die mit Hilfe von forward() vom RequestDispatcher auf eine Standard-JSP-Fehlerseite umleitet.
Jetzt ist mir aufgefallen (ich hätte wohl GENAUER die servlet-api studieren sollen ;) ), dass forward() keineswegs nach dem Dispatch-Vorgang die Abarbeitung im Servlet abbricht, wie ich das von Location: <newLocation> im HTTP Header gewohnt bin, sondern munter im Code weitermacht
schauen wir uns mal einen kleinen Codeabschnitt aus einem Servlet an, der so nicht korrekt ist:
//...
if ( something )
{
helper.doError( "Fehler1" ); // forward auf Fehlerseite
}
// weiterer Code
if ( something2 )
{
helper.doError( "Fehler2" ); // forward auf Fehlerseite
}
falls beide if-Statements zutreffen, gibt es beim zweiten doError eine IllegalStateException, da durch das erste Forward bereits Ausgabe betrieben wurde.
Natürlich könnte man hingehen und die beiden if-Abfragen verschachteln, so dass garantiert ist, dass nur ein einziges Mal doError aufgerufen wird - ob dies zu einer besseren Übersichtlichkeit führt, sei mal hier dahingestellt.
Bevor ich jetzt aber alle 38 Referenzen auf die Methode in meinem Projekt überprüfe, würde ich gerne wissen, ob es nicht eine Möglichkeit gibt, den Programmlauf (d.h. das Servlet) nach dem ersten forward zu beenden, ähnlich wie System.exit(exitCode) in normalen Java Apps.
Die JSP Seiten, auf die ich mit Hilfe von forward dispatche, bilden die Präsentationsschicht und den absoluten Endpunkt - danach braucht nix mehr gemacht zu werden - abgesehen vielleicht von einem finalize(), um die Datenbankverbindung zu trennen ;)
Any info?