# Dispatcher Forward mit try umhüllen



## brauni18 (1. Jun 2011)

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:

```
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 (1. Jun 2011)

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 (1. Jun 2011)

mvitz hat gesagt.:


> 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 (1. Jun 2011)

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 (1. Jun 2011)

mvitz hat gesagt.:


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



Dankeschön =)
Werd ich gleich mal machen



mvitz hat gesagt.:


> 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?


----------



## maki (1. Jun 2011)

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


----------



## brauni18 (1. Jun 2011)

maki hat gesagt.:


> 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



Danke für den Tipp =)

Was setzt ihr denn für Frameworks ein?


----------

