Dispatcher Forward mit try umhüllen

brauni18

Mitglied
Hallo =)

ich benutze für mein Webprojekt einen FrontController-Servlet, der jeden Request entgegen nimmt und mit einem

request.getRequestDispatcher(nextpage).forward(request,response)

den Request an ein anderes Servlet weiter leitet.



Das Problem ist jetzt folgendes:

Das Servlet muss mit dem Request arbeiten, d.h. Cookies hinzufügen etc. , deshalb kann ich das Servlet nicht includen sondern muss forwarden.
Ich möchte aber trotzdem, dass mein FrontController-Servlet einfluss auf den Response hat, z.B in Form eines ErrorHandlings.

Ich hatte mir das ungefähr so gedacht:
Java:
       try{
            dispatcher.forward(request, response);               
        } catch(Exception e){
                response.getWriter().println("<span class='error'> An Error occured </span>");
        }

aber das geht sicherlich nicht weil ein forward meinem FrontController die Verantwortung für den Response entzieht.




Habt ihr irgendeine Idee wie ich das Problem lösen kann?
Vielleicht eine eigene Dispatcher-Klasse?.....habt ihr dafür Vorschläge?

Oder gibt es vll doch einen Weg, dem Request Cookies mitzugeben obwohl das Servlet durch ein include aufgerufen wurde?





Vielen Dank für eure Hilfe =)
 

mvitz

Top Contributor
Ich hab es so gemacht, dass der Frontcontroller die Weiterleitung nicht an ein weiteres Servlet macht, sondern du dir eine eigene "Controller" Klasse/Interface schreibst, dass du dann dort einklinkst.
 

brauni18

Mitglied
Ich hab es so gemacht, dass der Frontcontroller die Weiterleitung nicht an ein weiteres Servlet macht, sondern du dir eine eigene "Controller" Klasse/Interface schreibst, dass du dann dort einklinkst.

aahhh....das ist ja auch cool.
Dann müsste ich halt ne abfrage bauen, wie die URI ist und müsste dann die entsprechende Controller-Klasse aufrufen.
Hab ich das so richtig verstanden?

Oder kann ich das per web.xml irgendwie anders lösen?
 

mvitz

Top Contributor
Habe das vor ca. 1-2 Jahren mal selber umgesetzt. Kannst dir ja mal die Sourcen angucken.

Framework: /trunk/src/java/de/hsnr/va/mm/mvc - de.hsnr.va.mm - Trac
Anwendung der Controller: /trunk/src/java/de/hsnr/va/mm/ui - de.hsnr.va.mm - Trac
web.xml: /trunk/src/web/WEB-INF/web.xml - de.hsnr.va.mm - Trac

Wenn du das ganze zu Übungszwecken machst, darfst du das natürlich gerne auch einmal für dich Programmieren, aber z.B. meine Implementierung ist garantiert noch lange nicht wasserdicht.
Soll das ganze eine "richtige" Applikation werden, würde ich an deiner Stelle darüber nachdenken, ein richtiges Webframework einzusetzen.
 

brauni18

Mitglied
Habe das vor ca. 1-2 Jahren mal selber umgesetzt. Kannst dir ja mal die Sourcen angucken.

Dankeschön =)
Werd ich gleich mal machen

Soll das ganze eine "richtige" Applikation werden, würde ich an deiner Stelle darüber nachdenken, ein richtiges Webframework einzusetzen.

Meinst du?...Also es soll eine kleine Application zu Übungszwecken werden.
Ich wollte halt extra kein Framework einsetzen, damit ich die volle Kontrolle über den Code habe.
Aber wenn du meinst dass das hilfreich ist.....gibts denn ein Framework dass du empfiehlst?
 
M

maki

Gast
Zu Übungszwecken ist es schon nicht verkehrt das selber mal zu machen, so bekommt schneller ein Verständnis für das was Frameworks machen.

Ich wollte halt extra kein Framework einsetzen, damit ich die volle Kontrolle über den Code habe.
In einem Prod. Projekt soltlest du das sein lassen, "volle Kontrolle" bedeutet nämlich auch "volle Verantwortung", das wird Anfängern immer sehr schnell viel zu viel ;)
 

Ähnliche Java Themen


Oben