JSP Skriptlets vs JSP Expression Language vs JSF

jeipack

Erfahrenes Mitglied
Hi
Ich arbeite mich zur Zeit intensiv in ein JSP Projekt ein und da tun sich mir natürlich ein paar Fragen auf.

1. Alle Steurungslogik (Schleifen, If, etc) in den JSP Seiten wird mit Scriptlets gemacht, EL (Expression Language) wird gar nicht verwendet. Allerdings gibt es über das ganze Projekt hinweg eine einheitliche Struktur, man kann also nicht wirklich von unsauberem Code sprechen. Berechnungen etc werden in externen Java Klassen gemacht. Auch wenn ich persönlich die EL noch ansprechend finde sehe ich, trotz der vielen Hinweise Scriptlets nicht zu verwenden und nur mit EL zu arbeiten, den Vorteil von EL für dieses Projekt nicht (Abgesehen davon dass es unmöglich wäre alles auf EL um zu stellen). Also hier die Frage der einzige Vorteil von EL ist die Übersichtlichkeit im Code, für das erzeugte Servlet gibt es keine Vor- oder Nachteile, ist das richtig?

2. Ich habe mich dabei auch in JSF eingelesen und verstehe ich das richtig, dass JSF JSP völlig ersetzen will oder gibt es doch noch Anwendungsgebiete wo JSP den Vorzug zu JSF erhällt? Abgesehen von Projekten die schon in JSP vorliegen natürlich, also sprich wenn ein neues Projekt erstellt wird unter welchen Umständen würde man doch noch zu JSP greiffen?

3. JSF erstellt ja sowohl das Servlet als auch den HTML Code und zum Teil auch ein bisschen Javascript (Für die ActionHandler). Wenn man nun aber sehr viel JavaScript verwendet muss man in einem JSF doch wieder HTML(JavaScript) schreiben oder wie geht man da vor? Ich habe z.B. ein Beispiel gesehen wo bei h:commandLink bei onclick gleich das JavaScript angehängt wird. Es erscheint mir auf den ersten Blick natürlich logisch, aber gleichzeitig etwas inkonsequent.

Und noch eine letzte vielleicht etwas dumme Frage:
4. kann EL problemlos in jeder JSP Seite verwendet werden oder gibt es gewisse Bedingungen? (Konfigurationen, Tomcateinstellung oder was auch immer)

Allgemein würden mich auch Erfahrungsberichte Interessieren von Leuten die von JSP auf JSF umgestiegen sind. Was war gut, was nervte? Und (auch wenn es etwas aus dem Kontext fällt) von Leuten die sowohl schon mit PHP als auch mit JSP/JSF gearbeitet haben.


greeez
jeipack
 
Zu Beginn erstmal "Hallo" an die liebe Tutorials.de Gemeinde :) Dieser Thread hat mich dann auch dazu gebracht sich hier mal anzumelden und bisschen rumzukritzeln.

Aber nun mal zu deinen Fragen. Ich denke mal du hast es soweit schon selber erkannt, dass es hier wie bei vielem kein "bestes", "übersichtlichstes" usw. gibt. Ich selber war Jahre lang nur mit PHP unterwegs, musste dann allerdings aufgrund meiner Arbeitsstelle in die J2EE Welt einsteigen. Dort fing es auch mit normalen Scriptlets in JSP Dateien an, entwickelte sich anschließend zum verwenden von Taglibs wie JSTL und letztendlich kam dann der endgültige Schritt zu JSF.
Ich möchte und kann dir nicht sagen, was wie sein sollte oder was am besten ist. Aber ich versuche dir mal ein paar Szenarien nahe zu bringen, die ich in den letzten Jahren so erleben durfte.
Einfache JSP Dateien mit Scriptlets sind in meinen Augen Quick und Dirty. Diese kann man gerne verwenden, wenn man ohnehin nicht wirklich viel Logik im Hintergrund laufen hat. Dennoch wird es sehr schnell unübersichtlich, wenn man z.B. größere Bereiche einer Seite looped und dort dann einen Haufen <%= usw. stehen hat.
Dies merke ich momentan sehr stark in meinem Betrieb. Dort erstellten vor einigen Jahren Entwickler die nicht wirklich mit Java vertraut waren solche Scriptlets Seiten. Dann wird das Projekt plötzlich riesig und heute braucht man dann zur Fehlersuche oder Modifikation erstmal knapp eine Stunde um sich zurecht zu finden. Dies ist nun natürlich ein absolutes Worst-Case Szenario und wird so hoffentlich nicht oft gefunden.

Aber das ganze hat mich dann dazu mehr Struktur reinzubringen, durch das verwenden von Taglibs wie JSTL. Hier hat man zumindestens schonmal den Ansatz Methoden wirklich in eigene Klassen auszulagern, und diese nicht einfach in die JSP Datei reinzuklatschen. Aber ich möchte garnicht so auf JSP rumhacken. Ich würde dir gerne bisschen mehr zu JSF erzählen, denn ich arbeite sehr gerne mit JSF und es ist zu meinem Liebling geworden. Vorallem auch gegenüber PHP.

Zunächst wirst du bei JSF mehr oder weniger dazu gezwungen MVC Schemen einzuhalten. Das führt schonmal dazu das du immer eine gewisse Übersichtlichkeit drinnen hast und weißt wo du welchen Teil deiner Applikation findest.
Grundsätzlich läuft das ganze so ab:
1. Du erstellt einen Controller (Managed Bean), in welcher du deine Logischen Methoden und Getter und Setter Methoden deiner View (JSF Seite) hast.
2. In deiner JSF Seite greifst du dann auf diesen Controller zu und konsumierst seine Methoden.

Bezüglich JavaScript und JSF:
Du hast bei JSF immernoch absolute Javascript Freiheit. Ich nutze z.B. sehr gerne jQuery in Kombination mit JSF. Ebenfalls kann du bei onclick etc. auch normal JavaScript Methoden aufrufen. Dies unterscheidet sich absolut noch von den bekannten HTML Events.

Was du hier beim Umgang mit JavaScript lediglich beachten musst, sind die "id" Namen, denn wie dir sicherlich bekannt ist generiert JSF den ganzen HTML Code selber. Dies ist sowohl segen, als natürlich auch Fluch. Hier gebe ich dir mit, dass du möglichst viel eigenständig IDs in deinen JSF Seiten vergibst. So hast du später auch im Ergebniscode erzeugte HTML Tags mit deinen IDs. Und dann kannst du natürlich wie gewohnt JavaScript Eventhandler etc. implementieren.

Um noch auf deine letze Frage einzugehen, bezüglich des Umstiegs:
Was mich am Anfang total störte war dieses absolut andere Handling mit JSF. Dieses "Du MUSST Code auf Klassen auslagern" und "Du MUSST JSF Tags verwenden". Dies erfordert natürlich, dass man sich wirklich in JSF einliest und die ganzen Kompenenten und Funktionesweisen erstmal versteht und einsetzen kann. Das programmieren der View hat hier halt nicht wirklich mehr was mit JAVA zu tun. Anders als bei JSP...
Wenn man das dann allerdings einmal kennengelernt hat, und sich zurecht findet fängt man an es zu lieben. Denn: Du hast klar strukturierten und einfachen Code. Du kannst nach einer Weile nachvollziehen was genau gerade im Hintergrund passiert und wo du deine Fehler suchen musst.

Und zu guter letzt: Ob JSF JSP ersetzen wird? JSF ist letzendlich nur ein Servlet, welches auf die von dir festgelegte Dateiendung anspringt ;D

Ich wünsche noch eine erholsame Nacht und möge die Diskussion beginnen :)
 
Zurück