# JSP, JSF und Servlet - wo ist der Unterschied?



## Erddrache (5. Aug 2006)

Moin... 

Eine Frage: wo liegt der Unterschied zwischen Java Server Faces und Servlets (JSP mal ausgeklammert)??? Ist das das gleiche??? Ja, oda??? Bzw Servlets sind ne Spezialform von JSF's??? Ich find da keine Abgrenzung.
Danke und Gruß


----------



## Leroy42 (7. Aug 2006)

Mich wundert's daß noch niemand geantwortet hat.  ???:L 

Ich selbst kenne nur JSPs und Servlets (wobei eine JSP intern auch nur in
ein Servlet umgewandelt wird). Soweit ich weiß, sind JSFs eine Ergänzung zu
JSPs.

Ansonsten schau mal unter einer der Links von Wikepedia.
Google: wiki jsf

Im übrigen bist du im falschen Teilforum: in _Enterprise Java_ ist deine Frage besser aufgehoben


----------



## KSG9|sebastian (8. Aug 2006)

http://java.sun.com/javaee/javaserverfaces/


----------



## HLX (8. Aug 2006)

Der Web-Container oder Applicationserver arbeitet grundsätzlich mit Servlets. Beim Ansprechen eines Servlets erledigt er erst etwas Verwaltungskram, baut dabei u.a. die HTTP-Nachricht in Objekte um, z.B. vom Typ HTTPServletRequest oder HTTPServletResponse und ruft letztlich die Service-Methode im Servlet auf, das angesprochen wurde. Im Servlet erfolgt dann deine persönliche weiterverarbeitung. Darstellungselemente in HTML müssen hart codiert als Strings eingefügt werden. Das Ganze ist für den Entwickler relativ unübersichtlich und nebenbei für einen überwiegend HTML-Entwickelnden kein glücklicher Zustand, weil viel Java und wenn HTML dann irgendwie mittendrin in Form von Strings.

Also hat man JSP erfunden. Hier werden Java-Elemente in "HTML-Seiten (mit JSP-Dateiendung)" eingebettet. Diese Form ist wesentlich übersichtlicher. Der Web-Container compiliert die JSP-Seite anschließend selbst zu einem Servlet. Daher reicht bei JSP i.d.R. auch kein JRE zur Ausführung aus sondern zum Compilieren muss ein JDK zur Verfügung gestellt werden.

Nun kann auch in HTML eingebettetes Java unübersichtlich werden. Außerdem wünscht man sich eigentlich eine Trennung von Darstellung und Programmlogik. Hier hilft dann JSF weiter. Ziel: sämtlicher Code verschwindet aus der JSP-Seite - alles wird mittels Tags realisiert. JSF ist ein Framework zur webbasierten GUI-Erstellung von SUN.


----------



## Leroy42 (8. Aug 2006)

@HLX

Das ist mal eine kurze und verständlich Erklärung.   

Warum erweiterst du nicht den Wikipedia-Artikel um diese Übersicht?


----------



## HLX (8. Aug 2006)

Leroy42 hat gesagt.:
			
		

> Warum erweiterst du nicht den Wikipedia-Artikel um diese Übersicht?



Nun, das ist doch schon sehr weit ausgeholt für JSF.


----------



## Ralf Ueberfuhr (8. Aug 2006)

Ich muss HLX aber bremsen. Um sämtlichen Java-Code aus der JSP auszulagern, reicht es, die JSP 2.0-Spezifikation zu verwenden, incl. JSTL und Custom Tags.

JSF ist mit einem ganz anderen Ziel verknüpft, nämlich dem Entwickler das von Desktop-Anwendungen bekannte ereignisgesteuerte Paradigma zu ermöglichen, d.h. es gibt nicht mehr Request und Response, sondern (sinngemäß) die Ereignisse Button-Klick etc. Außerdem übernimmt das Framework auch die Anbindung der Beans an Formularfelder.

JSF ist sehr jung und hat noch Kinderkrankheiten, aber eigentlich ist es eine Art Metamodell, welches bestimmte Oberflächenkomponenten bereit stellt, die dann durch einen Renderer in eine entsprechende Ausgabeform (z.B. HTML) gerendert werden. Leider kann ich es mir bislang nur mit HTML vorstellen, da HTML- und JSF-Tags vermischt sind, aber gedacht sind auch Render-Möglichkeiten wie Flash, Java-Programme uswusf.


----------



## HLX (8. Aug 2006)

Schon korrekt. Auch hier wollte ich "bewusst" nicht zu weit ausholen. JSP ist natürlich mittlerweile soweit weiterentwickelt worden, dass man auch hier über die JSTL viel Code auslagern kann. Selbstdefinierte Tags sind bei JSP allerdings nur dann sinnvoll, wenn ich diese mehrfach verwenden kann. Wer für 2 Zeilen einmaligen Code ein Tag definiert ist selbst schuld. JSF liefert hingegen u.a. Tags, die Lücken in der JSTL schließen.

Ziel bei JSF ist natürlich nicht alleine die Trennung Darstellung/Code. Diese wird durch JSF jedoch stark vereinfacht und die sinngemäße Trennung von Darstellung und Code besser verwirklicht. Ich persönlich finde das Verwenden des reinen JSP aufwändiger, unübersichtlicher und fehleranfälliger als JSF.

Im Gegenzug ist JSF bei winzigen Webanwendungen vollkommen übertrieben. Ich finde daher sollte schon eine gewissen komplexität bestehen, wenn man sich ein dickes Framework ans Bein binden will.


----------



## Leroy42 (8. Aug 2006)

HLX hat gesagt.:
			
		

> ...wenn man sich ein dickes Framework ans Bein binden will.



Ahh! Jetzt weiß ich endlich warum ich mich mit JSF noch nicht beschäftigt habe.   

[schild=6 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]1:0 für das Bauchgefühl![/schild]


----------

