# JSP für MVC geeignet?



## Antoras (30. Okt 2009)

Hallo, 

nach längerer Zeit widme ich mich gerade wieder dem Thema JSP. Allerdings steig ich mal wieder nicht so richtig beim Aufbau einer Webapplikation mit JSPs durch. 

Mein Ziel ist, dass ich so wenig Java-Code wie möglich in ein JSP auslagere bzw. dort keine Berechnungen anstelle, sondern lediglich die Benutzereingaben an meine Servlets weitergebe, welche die Daten dann verarbeiten und letzten Endes dann ein JSP mit den ausgewerteten Daten an den Benutzer zurücksenden. 
Bisher haben sich Tutorials, die ich gefunden habe aber nur darauf beschränkt, dass ich entweder nur JSPs oder nur JSPs mit Servlets hatte, sonst aber keine weitere Java-Klassen.
Deswegen meine Frage: Macht man das mit JSPs so, also dass man kein großartiges MVC-System aufbaut (kann ja fast nicht sein -> ist ja viel zu redundant / unübersichtlich)?

Nächste Frage: Wenn man das so macht, was für Alternativen hab ich dann? Ich hab in dem Java-Dschungel mit Frameworks und sonstigen Techniken irgendwie den Überblick verloren. Welches System würde mehr an meine Anforderungen passen? Oder kann ich meine Anforderungen so mit einer Webapplikation überhaupt nicht / nur schwer verwirklichen?


----------



## miwoe (31. Okt 2009)

Solltest die Quellen über JSP mal weiter lesen. Irgendwann wirst du sicher auch auf beans stoßen.

Und wenn du dann so richtig MVC machen willst  ,schau dir ein schönes Webframework an.

JSF, Struts, Tapestry...., die unterstützen alle MVC, jede so ihre Eigenarten

Open Source Web Frameworks in Java


----------



## haf_blade (31. Okt 2009)

Hi

also ich kann auch Java Server Faces empfehlen.
Habe mich da vor kurzem reingearbeitet und ich finde den Einstieg recht einfach.
Es ist auch sofort ersichtlich wie die MVC Struktur aussieht.

Hier ein kleines Beispiel:

GUI: JSP (per JSF Tag Bilbilotheken)
Model/Controller: Enterprise Beans
temporäre Daten: Beans
Datenbankzugriff: Persistence API

So kann man die grafische Oberfläche komplett von der Datenverarbeitung etc. trennen, genau wie die Datenbankzugriffe von der Datenverarbeitung.

Ich empfehle dazu eigentlich immer, dass man sich ein Buch beschafft, der Übersicht wegen aber das ist halt Geschmackssache


----------



## Antoras (1. Nov 2009)

Danke für eure Antworten, ich hatte im Prinzip schon ein kleines MVC-System, war nur verunsichert ob sich das lohnt, bzw. ob es in Verbindung mit JSPs sinnvoll ist, da ich nur Tutorials / Codebeispiele gefunden hab, die nicht auf dem genannten System aufbauen. 

Frameworks guck ich mir erst näher an wenn ich keine Lust mehr hab alles selber zu machen. 

lg
Antoras


----------



## maki (1. Nov 2009)

Solltest aber wissen dass JSP ein Auslaufmodell ist... mit JSF 2.0 sind Facelets die Viewtechnologie.


----------



## Antoras (1. Nov 2009)

Ist mir bewusst, aber da das Wissen wie man eine Serverapplikation aufbaut bei beiden Technologien benötigt wird ist es am Anfang wohl egal welche der beiden Technologien man sich anguckt. Und schaden kann es ja auch nicht wenn man sich JSPs mal angeguckt hat.

Oder bieten Facelets so spektakuläre Vorteile (vor allem in Verbindung mit JSF), dass es Zeitverschwendung wäre sich noch JSPs anzugucken (auch im Wissen, dass man irgendwann mal wechseln muss)?

EDIT: Hab mich nochmal ein wenig über die Unterschiede von Facelets und JSPs informiert. Habe rausgefunden, dass sich erstere nur in Verbindung mit JSF lohnt. Und da ich kein Interesse daran hab bleib ich erst mal bei JSPs und schau mir die Alternativen dann an, wenn ich mal Lust auf was neues hab.


----------



## maki (2. Nov 2009)

> Oder bieten Facelets so spektakuläre Vorteile (vor allem in Verbindung mit JSF), dass es Zeitverschwendung wäre sich noch JSPs anzugucken (auch im Wissen, dass man irgendwann mal wechseln muss)?


Ja.
Sobald man ein neues JSF Web-Projekt in Java entwickelt, ist JSP eingetlich der falsche Weg.



> EDIT: Hab mich nochmal ein wenig über die Unterschiede von Facelets und JSPs informiert. Habe rausgefunden, dass sich erstere nur in Verbindung mit JSF lohnt. Und da ich kein Interesse daran hab bleib ich erst mal bei JSPs und schau mir die Alternativen dann an, wenn ich mal Lust auf was neues hab.


Wie gesagt, JSP wird nicht mehr weiterentickelt, ist nur noch für "legacy" Projekte relevant 
Davon gibt es natürlich noch einige, aber auf Dauer wirst du mit JSP nicht glücklich werden.


----------



## deamon (3. Nov 2009)

Wenn ich dich richtig verstehe, brauchst du eine Template-Engine und eine MVC-taugliche Infrastruktur, die ihre Ausgaben mit Hilfe der Template-Engine macht. Dass JSP nicht so der Hit ist, ist ja hier schon angeklungen. Ich würde für diesen Zweck eine allgemeine Template-Engine verwenden, die nicht an einen Servlet-Container gebunden ist: FreeMarker oder Velocity zum Beispiel.

Wie weit du bei MVC Handarbeit machen willst, weiß ich nicht, aber wenn du es pur magst, könntest du mit Servlets + z. B. FreeMarker loslegen. Und wenn du auf mehr fertige Infrastruktur zurückgreifen will, könntest du z. B. Spring MVC verwenden.


----------



## Antoras (5. Nov 2009)

Das mit ner Template-Engine hört sich interessant an, werde ich mir mal näher anschauen. Aber lohnt sich das überhaupt ein externe Template-Engine  anzuschauen? Schließlich verfügt JSP ja auch über Templates. Und das ganze Zusatzzeugs wie Codegenerierung über des bspw. FreeMarker verfügt brauch ich sowieso nicht.

Ich hatte schon vor beim MVC-Aufbau so viel wie möglich selbst zu machen. Aber inwiefern mich z.B. das genannte Freemarker oder auch Facelets dabei unterstützen sollen versteh ich nicht so richtig. Das wirkt auf mich so nach der Art "auf fette Webapplikationen" hochgezüchtet.


----------



## deamon (5. Nov 2009)

JSP ist im Prinzip nichts anderes als eine Template-Engine - nur keine schöne. JSP ist umständlicher als nötig und man braucht immer einen Servlet Container. JSP ist also nicht gerade vielseitig. Wohingegen man FreeMarker oder Velocity in jeder beliebigen Anwendung verwenden kann. Und wenn FreeMarker mehr kann, als du brauchst, musst du diese Zusatzfunktionen ja nicht verwenden - es ist trotzdem einfach zu nutzen.

Der Ablauf in deinem Servlet sähe prinzipiell so aus:
1. Request verarbeiten und Antwort-Objekt(e) erstellen
2. Antwort-Objekte an Template-Engine übergeben
3. Ergebnis der Template-Engine (typischerweise eine HTML-Seite) an den Browser schicken.


----------



## Antoras (5. Nov 2009)

Ich werde mir die nächsten Tage mal eine deiner genannten Template-Engines genauer anschauen. Vielleicht bin ich ja gleich so begeistert, dass ich keine JSP mehr verwenden möchte. Auf einem anderen Weg als ausprobieren bekomme ich sowieso nicht raus was besser ist...


----------



## Svenni (7. Nov 2009)

haf_blade hat gesagt.:


> Hi
> 
> also ich kann auch Java Server Faces empfehlen.
> Habe mich da vor kurzem reingearbeitet und ich finde den Einstieg recht einfach.
> Es ist auch sofort ersichtlich wie die MVC Struktur aussieht.


Meiner Meinung nach ist das nicht unbedingt sofort ersichtlich. Gerade bei JSF findet man viele (!) unterschiedliche Meinungen zu den Teilen Modell und Controller.



haf_blade hat gesagt.:


> Hier ein kleines Beispiel:
> 
> GUI: JSP (per JSF Tag Bilbilotheken)
> Model/Controller: Enterprise Beans
> ...



Dazu hab ich vor kurzem eine Frage im Web Tier gestellt. Wie würdest du die Action-Methoden der Beans einordnen?


----------



## maki (7. Nov 2009)

haf_blade hat gesagt.:


> Hi
> 
> also ich kann auch Java Server Faces empfehlen.
> Habe mich da vor kurzem reingearbeitet und ich finde den Einstieg recht einfach.
> ...


Die meisten Leute würden MVC in einer Schichtenanwendung falsch erklären 

MVC existiert nur in der Presentationtier 
EJBs (Entity Beans) können als Model genutzt werden (oder man nimmt TOs), aber eine EJB ist niemals ein Controller für MVC 
SessionBeans werden auch mal als ApplicationController bezeichnet, hat aber nix mehr mit MVC zu tun.
Die ManagedBeans in JSF sind die sog. ViewController...


----------



## Svenni (7. Nov 2009)

Danke für die Antwort maki.
Meinst du die "komplette Managed Bean"? (ich weiss das sich das blöd anhören muss)
Wie im Post im Web Tier Forum geschrieben hätte ich bisher die Action-Methoden dem Controller zugeordnet und die restlichen Teile der Bean dem Modell. Oder darf man das nicht so aufgeteilt sehen? 

Die meisten Grafiken zeigen einfach nur die Managed Bean und sagen: Modell. Und andere (auch Bücher) sagen dann teils sowas: "...verbietet sich die Verwendung des vorgestellsten Code-Musters im Controller einer MVC-Lösung, im Falle von JSF den Action-Methoden der Managed-Beans". Das verwirrt mich halt etwas.


----------

