# Wie passen JavaBeans oder Expression Language ins MVC Konzept?



## fsteinke (18. Nov 2009)

Hallo,

habe mal eine grundlegende Frage zum MVC Pattern mittels JSP.

Man soll ja laut Lehrbuch immer schön im MVC Pattern entwickeln oder? Also JSP ist die View die letztendlich ein Servlet ansteuert oder besser das Servlet in das ja eine JSP Seite übersetzt wird. 

Wie passt jetzt eine Javabean in das Konzept? Also ich kann ja auf JSP Ebene einer JavaBean z.B. eine ID eines Datensatzes meiner MySQL DatenbankTabelle übergeben und die Bean verbindet sich mit der DB und löscht halt den Datensatz. Ist ja kein Problem und funktioniert ja auch.

Bloß wie passt das ganze ins so von den Lehrbüchern hochgehaltene MVC Konzept?


Meine JSP ist die View die letztendlich die Anzeige/Eingabe übernimmt und  setter und getter der Bean setzt oder eben anzeigt. Meine JavaBean (nicht EJB) ist ja eigentlich das Model da es ja die Geschäftslogik enthält oder? Der Controller sollte doch eigentlich das Servlet sein. Bloß ich habe keins zumindest keins was ich selbst geschrieben habe.

Ist der Controller in diesem Fall das Servlet das von der JSP generiert wurde? Wer kann mir das beantworten? 

Wäre wirklich dankbar für eine Antwort die mir das erklärt da mich MVC mehr verwirrt als das es mir hilft. Ein klarer Beleg dafür das ich da was nicht verstehe oder?

Danke für jede Info


Gruß Frederick


----------



## HLX (19. Nov 2009)

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 Verweis 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 (könnte z.B. auch in Swing wiederverwendet werden).

JavaBeans enthalten die Daten der grafischen Benutzeroberfläche und gehören somit zum Model. Die JSP-Seiten mappen die einzelnen GUI-Elemente auf Attribute der JavaBeans. Nach Benutzerinteraktion greifen Servlets die ggf. geänderten Daten der JavaBeans auf und übergeben Sie der Business Logik.


----------



## MrWhite (19. Nov 2009)

Hier gibt es einen netten Artikel dazu:

GUI Architectures

Das reine MVC gibt es nicht wirklich. Es gibt viele Arten davon.


----------



## fsteinke (19. Nov 2009)

Hallo,

Danke für die schnelle Antwort.


>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 Verweis sie auf >eine dem >Ergebnis entsprechenden JSP-Seite (z.B. Folgeseite oder Fehlerseite).


Ist damit auch das Servlet gemeint das automatisch vom Container  (für die JSP Seite) erstellte gemeint ?

Also müsste ja eigentlich kein eigenes Servlet schreiben oder? Wenn ich im JSP einer JavaBean einen Parameter übergebe und auch abfrage wird das ja im Servlet sozusagen beahndelt und an die Bean weitergeleitet oder? Ist das so zu sehen?

Besten Dank

Gruß Frederick


----------



## HLX (19. Nov 2009)

Nein, damit ist nicht das automatisch erstellte Servlet gemeint. Wenn du nach MVC entwickeln möchtest, solltest du für die Steuerung eigene Servlets erstellen und somit die JSP-Seiten konsequent von Steuerungslogik frei halten.

Damit werden die ohnehin meist völlig überladenen JSP-Seiten übersichtlicher. Zusätzlicher Effekt: du hast es später leichter bei der Fehlersuche, da Servlets als reine Java-Klassen deutlich einfacher zu debuggen sind.

Ein Beispiel für dieses Vorgehen findest du mit Apache Struts.


----------



## HLX (19. Nov 2009)

MrWhite hat gesagt.:


> Hier gibt es einen netten Artikel dazu:
> 
> GUI Architectures
> 
> Das reine MVC gibt es nicht wirklich. Es gibt viele Arten davon.



Der TS meint mit MVC sicherlich Model 2:
Model 2


----------

