Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Java EE 7 Grundkurs

Einführung in JSF

Testen Sie unsere 2013 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
JavaServer Faces stellt ein Framework für die Entwicklung von dynamischen Websites mit Java zur Verfügung. Die Einführung hierzu bietet einen Überblick über die geschichtliche Entwicklung von JSF und vergleicht das Framework mit anderen Technologien.

Transkript

Um dynamische Webseiten im Java-Umfeld bereitzustellen, stehen Ihnen einige Technologien zur Verfügung: Servlets und JSPs oder auch JSF, die JavaServer Faces. JSF sind der aktuelle Standard und wir werden uns in diesem Video mit den Grundlagen von JSF ein wenig auseinandersetzen. JSF selbst wurde im Jahr 2004 verabschiedet. Es ist ein standardisiertes Framework im Java-EE- und Web-Umfeld. Dies bedeutet für Sie, dass Sie eine JSF-Applikation sowohl auf einem Application Server als auch einem Webserver, wie bspw. dem Apache Tomcat, betreiben können. Ganz wesentlich für JSF ist der MVC-Ansatz. MVC steht dabei für "Model View Controller" und bezeichnet einen Ansatz, in dem die Webschicht nicht monolithisch ist, sondern, in dem es verschiedene Komponenten gibt, die unterschiedliche Aufgaben zu erfüllen haben. Ebenfalls ganz stark ist JSF im Bereich von Ajax. Wir haben eine eingebaute Ajax-Unterstützung und Ajax als Technologie erlaubt es uns, Teile einer Webseite zu aktualisieren, ohne die komplette Seite ständig neu laden zu müssen. Dies macht es für den Benutzer viel bequemer und performanter, mit einer Webapplikation zu arbeiten. Da JSF selber nur ein Standard ist, gibt es diverse Implementierungen dafür, bspw. RichFaces, PrimeFaces oder IceFaces. Deren Grundfunktionalität ist stets gleich, aber diese Implementierungen unterscheiden sich in zusätzlichen Funktionalitäten. Als Programmierer wird man sich das Framework aussuchen, was für die aktuelle Aufgabe am besten geeignet ist. Sollte man dort keine besonderen Anforderungen stellen, dann schaut man nach, was auf dem Application Server der Standard-Framework ist und dann weiß man, welche zusätzlichen Funktionalitäten man nutzen kann. Beschränkt man sich lediglich auf die Standard-JSF-Funktionalitäten, ist man in jedem Fall auf der sicheren Seite, denn alle Frameworks unterstützen den JSF-Standard-Umfang. JSF selbst ist, wie bereits erwähnt, ein Standard und definiert im JSR 344. Es basiert auf der Servlet-Technologie. Es ist ein komplettes Framework, damit wir dynamische Webseiten bereitstellen können. Das heißt, wir können Webseiten erstellen, wir können Komponenten an Beans binden, wir sind in der Lage, Navigationen umzusetzen und wir können Zustände von Webseiten und Benutzern über Anforderungen hinweg verwalten. JSF stellt uns ein einfaches Programmier-Modell bereit, sowohl für Client als auch für Server. Eine typische JSF-Applikation ist nicht monolithisch, sondern sie besteht aus verschiedenen voneinander unterscheidbaren Komponenten. Zum einen die Webseiten; diese werden auch Facelets genannt. Das sind die Dinge, die später nach HTML umgewandelt und an den Client, also den Browser, gesandt werden. Im Hintergrund arbeiten die Managed Beans. Die Managed Beans selber sind nun auch wieder keine monolithische Schicht, sondern es gibt sie in verschiedenen Ausprägungen. Das sind letztlich Java-Klassen, von denen ein Teil als sogenanntes Model fungiert, d. h. sie halten Daten vor. Und ein anderer Teil fungiert als Controller. Dieser Teil manipuliert die Daten und die Webseiten. Optional gibt es Deployment-Descriptor und [eine] Konfigurationsdatei und, wenn Sie möchten, auch noch weitere Komponenten wie Converter oder Listener, mit denen Sie eine eigene Funktionalität bereitstellen können. Lassen Sie uns über einige Grundprinzipien reden. Zunächst sollte man wissen: Es wird zumeist HTML zurückgegeben aus einer JSF-Applikation. Ganz selten gibt es dynamisch erzeugte, binäre Inhalte. Technisch ist es möglich und umsetzbar, aber eben äußerst selten. HTML und JavaScript werden vom Browser verarbeitet. Das bedeutet, dass wir als JSF-Applikation gar keine Kontrolle darüber haben, was tatsächlich auf dem Browser angezeigt und verarbeitet wird. Wir liefern nur die Inhalte aus. Der Browser parst das HTML und schaut nach, welche externen Referenzen auf bspw. Bilder, Stylesheets oder JavaScripts es gibt und lädt diese dann nach. Der Server, also die Seite, auf der wir arbeiten, weiß nach einem Seitenabruf, auch Request genannt, nichts mehr vom Client. Das liegt [am] Protokoll. HTTP als Transportprotokoll kennt keine Zustände. Und das bedeutet, dass wir Mechanismen brauchen, mit denen wir Zustände, also was ist ausgeliefert worden, welche Daten stehen an welcher Stelle, irgendwie vorhalten müssen. Aus diesem Grund wird der Zustand, den die verschiedenen Steuerelemente haben, meistens vom Server an den Client geschickt, und zwar als verstecktes Formularfeld. Und wenn der Client dann Daten ändert, dann schickt er dieses Formularfeld wieder zurück. Das nutzt der Server, um den Zustand wieder aufzubauen und die Seite wieder in den gleichen Zustand zu bringen, den sie vorher hatte. Ein Client als solches ist auch nicht identifizierbar für den Server. Jeder Browser sieht für ihn gleich aus, aber es gibt Möglichkeiten, nämlich über Cookies oder generell über die Session. In solchen Cookies, also Session-Cookies, steht eine Session-ID. Diese kann optional auch in der URL, also in der anzuspringenden Adresse, transportiert werden. Der Client selbst weiß wiederum gar nichts von der Programmierung auf dem Server. Es gilt hier das BlackBox-Prinzip. Das bedeutet, dass der Client gar nicht wissen kann, dass wir mit JSF arbeiten und nicht mit PHP oder ASP.NET oder Servlets oder anderen Technologien. Für uns wichtig: Der Client bekommt HTML. Wir arbeiten im JSF, aber mit JSF-Komponenten. Das sind Java-Klassen. Und diese Java-Klassen rendern eine Ausgabe nach HTML. Wir können diese Java-Klassen ansprechen in unseren Controllern und im Model. Wenn eine Anforderung an einen Server kommt, dann gibt es verschiedene Verarbeitungsschritte, die eine JSF-Applikation unterstützt. Der erste Schritt ist immer "Restore View". Dabei werden die vom Client übergebenen, versteckten Zustandsinformationen ausgewertet und der letzte Zustand der Seite, der bekannt war, wird wieder hergestellt. Das bedeutet, welche Komponenten haben wir und welche Werte hatten die, als sie zum Client geschickt worden sind? Danach erfolgt "Apply Request Parameters". Dabei werden die übergebenen Parameter, also die geänderten Werte, an Komponenten übergeben, nämlich an genau die Komponenten, die im vorherigen Schritt wieder hergestellt worden sind. Im Anschluss werden die Daten validiert und verarbeitet. Anschließend können unsere eigenen Logiken aufgerufen werden. Und ganz am Ende findet im "Render Response"-Schritt das Generieren der HTML-Ausgabe statt. Ganz wesentlich für JSF ist der Model-View-Controller-Ansatz. Der Model-View-Controller-Ansatz ist nun kein Ansatz, der speziell für JSF entwickelt worden ist, sondern der ist schon um einiges älter. Er ist nämlich schon seit Anfang der Achtzigerjahre bekannt und sehr weitreichend erprobt. Generell wollen wir ja keine monolithischen Applikationen haben. Deswegen unterteilen wir Applikationen in verschiedene logische Schichten: Datenschicht, Geschäftslogikschicht und Frontend-Schicht. Und auf der Frontend-Schicht können wir nun den MVC-Ansatz nutzen. Dieser sorgt dafür, dass die Frontend-Schicht nun wieder nicht monolithisch ist, sondern auch nochmal in verschiedene Komponenten unterteilt ist. Ein MVC-Ansatz besteht jeweils aus drei Komponenten: nämlich Model, View und Controller. Das Model stellt dabei die lokalen Daten bereit. Es kann aber auch Daten aus der Geschäftslogik und der Datenschicht bereitstellen. Das Model wird normalerweise vom View genutzt und vom Controller gesteuert und befüllt. Der View ist die Frontend-Schicht. Das bedeutet, unsere Views generieren HTML. Grundsätzlich sollte der View so dumm wie möglich sein. Das bedeutet, der View selber hat gar keine Steuerungsfunktionalitäten, sondern lediglich Darstellungsfunktionalitäten und stellt die Schnittstelle zum Benutzer dar. Die eigentliche Steuerungsfunktionalität, also das Anstoßen von Verarbeitungen oder das Laden von Daten, erfolgt durch den Controller. Der kommuniziert nämlich mit der Geschäftslogik und er manipuliert Model und View. Wie bereits eingangs erwähnt, können Sie verschiedene Technologien einsetzen, wenn Sie im Java-Umfeld dynamische Webseiten bereitstellen wollen. Servlets bspw. wären eine Alternative. Servlets selbst sind die Technologie unterhalb von JSF. Wir können Servlets auch gerne direkt verwenden. Allerdings müssen wir wissen, wenn wir Servlets direkt verwenden, dann wird das alles viel unbequemer. Wir müssen uns selber darum kümmern, dass wir die Daten korrekt verarbeiten und entgegennehmen, wir müssen selber Zustände wieder herstellen, wir müssen selber das HTML erzeugen. Dies bedeutet letztlich deutlich mehr Implementierungsaufwand, aber, da wir natürlich alles selber machen, auch viel mehr Möglichkeiten und Kontrolle für uns. JSF schirmt uns von diesen Basics ab. Das bedeutet, wir müssen im JSF-Umfeld normalerweise nicht mit Servlets arbeiten. Wir können jedoch dennoch den sog. Servlet-Kontext erreichen und darüber dann doch auf einige Funktionalitäten von Servlets zurückgreifen. In diesem Video haben wir uns mit den Grundlagen von JSF und der Verarbeitung auf dem Server auseinandergesetzt. Ebenfalls haben wir besprochen, was der Unterschied zwischen Servlets und JSF ist. Und wir haben über den MVC, Model-View-Controller-Ansatz, gesprochen. Diese Informationen sind die Grundlagen für jede weitere Beschäftigung mit dem JSF-Framework.

Java EE 7 Grundkurs

Lernen Sie die Grundlagen der Programmierung mit Java EE 7 verstehen und anwenden.

6 Std. 4 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!