# Anwendung mit Model 2 Architektur



## Java1212 (13. Nov 2011)

Hallo liebe Community,
ich sitze gerade an einem Projekt, um meine Kenntnisse in JEE zu vertiefen und habe Schwierigkeiten eine grundlegende Struktur aufzubauen. Ich möchte gerne die Model 2 Architektur nutzen, also JSP, Servlet und Beans, jedoch ist mir noch nicht ganz klar wann und wie die einzelnen Komponenten eingesetzt werden. Zunächst zu meinem derzeitigen Wissen:

Eine Anwendung nach dem MVC-Prinzip (bzw. Model 2-Prinzip) sollte aus folgenden Elementen bestehen:

JSP-Seiten: Ausschließlich zuständig für die Darstellung (View)

Servlets: Zuständig für die Steuerung der Anwendung. Ein Servlet wird aufgrund einer Benutzerinteraktion von der JSP-Seite aus angesteuert. Es übernimmt von nun an die Steuerung, d.h. Kommunikation mit der Business-Logik und abschließend verweist sie auf eine dem Ergebnis entsprechenden JSP-Seite (z.B. Folgeseite oder Fehlerseite). Servlets enthalten keine Darstellungs-Elemente.

Business-Logik: Kennt weder Servlets noch JSP-Seiten und ist somit unabhängig von der eingesetzten Java-Technologie. Es ist eine ganz normale Java-Klasse auch POJO genannt. 

JavaBeans stellen das Model dar oder sind Teile des Models ?. Nach einer Benutzerinteraktion greifen Servlets die ggf. geänderten Daten der JavaBeans auf und übergeben Sie der Business Logik.

In diesem Zusammenhang habe ich eine klassische Loginseite (login.jsp) erstellt. Man kann sich mit einem Benutzernamen und einem Kennwort anmelden. Nach einem Klick auf Anmelden wird auf ein Servlet weitergeleitet das wiederum durch die doPost Methode bzw. das request Objekt die übermittelten Daten abgreift. Diese Daten werden dann in einer Service-Klasse (Businesslogik) überprüft. Ist der Benutzername und Passwort richtig, wird per redirect auf die Hauptseite (index.jsp) verwiesen, ansonsten erscheint wieder die Loginseite. In der Service-Klasse habe ich einfach einen Hash mit verschiedenen Usern angelegt, um testweise die Überprüfung zu ermöglichen. 

Soweit so gut. Nun möchte ich gerne meine Anwendung an eine Datenbank anbinden und zukünftig Benutzername und Passwort aus der Datenbank beziehen und vergleichen. Wo würde ich in meinem Konstrukt die Datenbankverbindung realisieren und in welchem Zusammenhang kann ich die JavaBeans benutzen ?

Eine Erklärung wäre sehr hilfreich, da ich im mom nicht weiterkomme 

Gruß

Javamaniac


----------



## Java1212 (13. Nov 2011)

Hallo nochmal,
ich habe noch einen wichtigen Punkt vergessen. Unzwar würde ich gerne über den Umgang mit einer relationalen Datenbank sprechen. Ich kenne bisher nur den Weg über den JDBC Treiber, also diesen einfach in eine Klasse einbinden, ein Objekt davon erzeugen und dann mittels SQL Statements mit der Datenbank kommunizieren. Ich habe jedoch gelesen das es weitaus komfortablere Möglichkeiten gibt, wie die JPA bzw. Hibernate. Dort werden direkt objekte in eine Datenbank gemappt. Da dies komplettes Neuland für mich ist, würde ich mich über eine Einführung in die Thematik freuen. 

Gruß

Javamaniac


----------



## itomski (14. Nov 2011)

Hym... ich weiß nicht, wo dein Problem liegt.
Hast du ein JEE Buch?

Da bist du doch sicher schon über einen RequestDispatcher und die Methode setAttribute() von ServletContext, HttpRequest oder HttpSession gestolpert.

Für den ersten einfachen Test kannst du das so machen, dass du ein Servlet als Controller verwendest indem du Infos aus dem Request liest und abhängig davon, was dabei rauskommt unterschiedliche Fälle einer Switch-Anweisung ansprichst.

In den Fällen greift du dann jeweils auf das Model, erzeugst damit die Beans die du dann (abhängig davon, was du damit machen willst) per setAttribute(...) entweder in das Request- oder Session stopfst.

Wenn das Request ausreichend daten hat, holst du dir den RequestDispatcher und leitest das Request an deine JSP die dann das Response generiert.

Das was.

Komfortabler geht das ganze aber mit nem FrontController aber für ne kleine Site dürfte das oben auch schon reichen.

Zum Thema DB:
Frag mal Google nach "Tomcat JDBC Connection Pool". Dann richtest du dir das mal in der context.xml mal ein und verbindest das ganze mal von der web.xml mal mit deiner Anwendung. Dann lässt du dir die Connection geben und greifst fröhlich von deinem Model auf die DB zu.

Oder du verwendest Spring für MVC und Hibernate für die DB.... ;-)

Das INet ist voll von Beispielen - wundert mich, dass du bis jetzt nichts gescheites gefunden hast.


----------



## Javamaniac (15. Nov 2011)

Danke erstmal für die Antwort.

Ich habe mich den ganzen Tag durch diverse Tutorials gearbeitet und denke das ich die grundlegende 
Syntax bzw den Aufbau verstanden habe. Zusammenfassend meine ich das eine Bean nichts als eine 
Klasse ist die Objekte der Realität repräsentieren wie z.B. eine Person und dazu dienen Daten zwischen
JSPs und Servlets zu verschicken. Somit ist eine Bean auch gleichzeitig das Model in der Model 2 Architektur. Ein Servlet nimmt die Benutzerinteraktionen auf und ruft innerhalb einer Serviceklasse entsprechende Funktionen auf. Diese wiederum repräsentiert die Geschäftslogik und ist für das Ändern
der Datenbestände der Beans zuständig. Die JSP ist letztendlich die Präsentationsklasse bzw. View.

Ich hatte am Anfang Schwierigkeiten das Model zu definieren, wobei ich denke das ich es jetzt verstanden habe. Ist alles soweit korrekt ?


----------

