$K(J2EE Patterns) $R(Objective) Given a scenario description with a list of issues, select a pattern that would solve the issues. The list of patterns you must know are: Intercepting Filter, Model-View-Controller, Front Controller, Service Locator, Business Delegate, and Transfer Object. $R\ $KK(Front Controller) Wenn eine Anfrage direkt an die JSP's bzw. Servlets geht, kann es zu folgenden Problemen kommen. * Jedes einzelne Servlet bzw. JSP braucht eigene Routinen z.B zur Authentifizieren * Oft herscht eine Bildschirmablauf Logik, z.B. darf kann man nur eine Bestellung absenden, wenn etwas im Einkauskorb ist.Diese Ablauflogik ist auf die entsprechenden Servlets bzw JSP verteilt, da diese die nachfolgende kennen. Die Idee des FrontControllers die Anfragen an einen Controller zu senden. Dieser Analysiert die Anfrage, und leitet diese dann ggf. an die Servlets bzw JSP die die Bildschirmoberfläche repräsentieren weiter. $B(Bilder,frontController.gif,Front Controller) Die Bildschirm-Ablauflogik kann nun zentral im FrontController behandelt werden. Der FrontController fungiert meistens als Dispatcher. Der Dispatcher leitet die Anfrage an die View (z.B: JSP) weiter. Helper Klassen (meistens als Java Bean) helfen dem Controller bzw. View ihre Arbeit zu erledigen. $B(Bilder,frontControllerSequenz.gif,Sequenzdiagramme Front Controller) Vorteile: * Zentrale Kontrolle * Verbessertes Sicherheitsmamanagement Durch den Controller hat man einen zentralen Einstiegspunkt. Dies erleichtert Logging Informationen und andere Sicherheitsmassnahmen. * Erhöht Wiederverwendung Der Controller erleichtert es eine Applikation in mehreren Einheiten aufzuteilen. Funktionalität die von allen Servlets bzw JSP benötigt wird, kann zentral im Controller verarbeitet werden.