
Java Server Faces (JSFs) als eine Weiterentwicklung der Java Server Pages (JSPs), welche vor allen Dingen Vorteile bei der Verarbeitung von formularbasierten Webseiten beinhalten.
Über den Autor des Kurses sowie seinen Nutzen für den Kursteilnehmer.
Unterschiedliche Möglichkeiten, welche von den Java Server Faces angeboten werden, um die Entwicklung von webbasierten Enterprise-Applikationen zu unterstützen.
Die gezeigte Buchverwaltung werden wir innerhalb des Kurses zusammen aufbauen. Am Ende des Kurses bist Du in der Lage, diese Buchverwaltung entsprechend Deinen Zwecken anzupassen, sei es sie zur Büchereiverwaltung auszubauen oder auf Objekte gemäß Deinen Anforderungen umzubauen.
Das Model-View-Controller-Pattern (MVC) in seiner allgemeinen Form und wie es innerhalb der Java Server Faces zur Anwendung kommt.
Durchgang durch den Lifecycle eines Requestes, wie er serverseitig von den Java Server Faces (JSFs) verarbeitet wird, bis er wieder zum Client als Response zurückgeschickt wird.
Bereitstellung einer web.xml, in welcher das Faces-Servlet konfiguriert wird, damit Java Server Faces (JSFs) innerhalb der Anwendung dadurch verfügbar werden.
Über die faces-config.xml erhält das Faces-Servlet seine Konfigurationen.
Eine erste simple Java-Server-Face (JSF), welche die Header des Requestes anzeigt.
Überblick darüber, welche HTML-Elemente innerhalb von Java Server Faces (JSFs) genutzt werden können.
Die zu einer Java Server Faces (JSF) gehörige Backing Bean, welche sich im Backend befindet und das Model hinter der Java Server Faces wiederspiegelt.
Der Schlachtplan, wie wir Java Server Faces (JSFs) zum Laufen bekommen wollen, wird vorgestellt. Auch wird unser Beispielprojekt einer Buchverwaltung kurz eingeführt.
An den einzelnen Hands-On-Lektionen befindet sich immer eine Buchverwaltung.zip-Datei. In dieser befindet sich der aktuelle Stand. Die Dateien lassen sich einfach in Eclipse importieren und dann dort anschauen.
Das Build-Tool Maven ist in der Lage uns Abhängigkeiten, die wir in unserem Projekt benötigen, konkret gesagt die Bibliotheken, die die Java Server Faces beinhalten, automatisch hineinzuladen und den Build-Prozess standardisiert zu unterstützen.
Die lokale Arbeitsumgebung wird vorbereitet, dazu laden wir Java, Apache Tomcat und Eclipse herunter und installieren diese.
Ein Maven-Projekt wird angelegt und in dieses Projekt mittels des automatischen Nachladens der Libraries die Java Server Faces (JSFs) konfiguriert.
Sowohl die web.xml wie auch die faces-config.xml werden angelegt.
Wir starten das Maven-Projekt erstmalig durch, um zu testen, ob auch alles richtig funktioniert.
Die Backing-Bean für das Buch wird hinzugefügt.
Ein Formular zur Entgegennahme der Buchdaten wird erstellt.
Dem CommandButton wird ein ActionListener hinzugefügt. ActionListener werden aufgerufen, bevor die eigentliche Action aufgerufen wird.
Wenn sich Werte in den Formularfeldern geändert haben, so werden ValueChangeListener aufgerufen. Diese können entweder als Methode in dem Modell implementiert werden oder jedoch in einer eigenen Klasse.
Mittels AJAX lassen sich geänderte Formularfelder direkt an den Server übertragen und schon während der Benutzer das Formular ausfüllt, Zusatzinformationen innerhalb des Formulares anzeigen.
Wir haben den Lifecycle als Lebenszyklus des Requestes kennengelernt, der zum Server geschickt wird und als Response wieder zurück kommt. An die einzelnen Phasen dieses Lifecylces lassen sich Listener hängen, welche aktiviert werden, wenn der Request diese Phase betritt und wieder verlässt.
Demonstration einer SelectManyListbox in unserem Formular und das Hinzufügen einer Action durch einen ActionListener, die vor der eigentlichen Action ausgeführt wird.
Ein ValueChangedListener wird hinzugefügt, der eine Methode in unserem Book-Modell aufruft.
Hinzufügen eines SelectOneListbox-Feldes und eines ValueChangedListener, der eine Methode in einer neuen Klasse aufruft.
Nutzung von AJAX, um innerhalb des Formulares ein Darstellungsfeld für einen String zu ändern.
Das Templating-System der Java Server Faces (JSF) baut auf sogenannte Facelets auf. Mit diesem System lassen sich Komponenten von Java Server Faces (JSF) wiederverwenden.
Eine neuer Namespace für Facelets wird vorgestellt.
Einfaches includieren einer XHTML-Datei in eine andere XHTML-Datei.
Das Zusammensetzen einer Seite aus mehreren Bausteinen, wobei das Gerüst der Seite in einem Template definiert wird, alle Bausteine jedoch mit einem Composition-Tag innerhalb einer Datei definiert werden.
Das Composite-Tag entfernt die umgebenden Elemente und beschränkt sich darauf, die in ihm definierten Teile einer Seite in das Template einzufügen. Das Decorate-Tag geht den umgekehrten Weg und entfernt die umliegenden Elemente nicht.
Von jeder Seite können Parameter in includierte Seiten durchgereicht werden.
Inhalte von normalen XHTML-Kommentaren werden als auskommentierte Inhalte einer XHTML-Seite zum Client transportiert und können so geheimes Wissen über die Seite offenbaren. Das <t:remove>-Tag sorgt dafür, dass die Inhalte vollständig entfernt werden.
Das <t:repeat>-Tag sowie das <h:dataTable>-Tag können dazu benutzt werden, um Tabelleninhalte in einer JSF-Seite anzuzeigen.
Erstellen der Template-XHTML-Datei inklusive der Platzhalter und ihrer Standardtexte.
Verwendung der Template-Datei, um die index.xhtml aufzuräumen.
Nutzen von <h:dataTable>, um eine Liste von Büchern in der Seite anzuzeigen. Dazu wird die alte index.xhtml in eine create.xhtml kopiert und die index.xhtml angepasst, so dass sie eine DataTable beinhaltet. Ein neues Modell, das BookShelf, wird eingefügt und dieses in der <h:dataTable> genutzt.
Welchen Vorgang bezeichnet man als Internationaliserung (I18N) und welchen als Lokalisierung (L10N)?
Nutzen von Properties-Dateien, die die lokalisierten Sprachstrings beinhalten.
Einbindung der properties-Datei(en) in das System und Referenzierung innerhalb der XHTML-Java Server Faces.
Die message.properties werden angelegt. Zusätzlich wird die deutsche messages_de.properties in das Englische übersetzt.
Die Lokalisierung wird in der faces-config.xml konfiguriert.
Die zu übersetzenden Strings aus den XHTML-Dateien werden in die message_de.properties eingetragen und in die message_en.properties übersetzt. Das Projekt wird im Chrome-Browser getestet, indem die dortigen Spracheinstellungen genutzt werden.
Einführung in die Konvertierung und Validierung insbesondere in die Phase des Lifecycles, in welchen diese stattfinden.
Die drei Typen von Zahlenkonvertierungen.
Die Möglichkeit Java-Date-Objekte zu erzeugen und anzuzeigen.
Individuelle Konvertierungen durch die Nutzung einer eigenen Klasse.
Nutzung des required="true"-Attributes, um die Befüllung bestimmter Eingabefelder zu erzwingen.
Validatoren für Wertebereiche von Variablen und Stringlängen sowie Validatoren basierend auf Regular-Expressions.
Bereitstellen einer Klasse, die die Validierung durchführt.
Bereitstellen einer Methode, die die Validierung durchführt.
Die Validierung in der Backing-Bean mit externen Annotationen, die von Seiten der Persistenz zur Verfügung gestellt werden.
Festlegen von Fehlernachrichten, die ausgegeben werden, wenn ein erforderliches Attribut fehlt oder durch die Validierung durchfällt.
Innerhalb des Webs begegnet man einer Vielzahl an Formularen, in welchen Benutzer ihre Daten hinterlassen oder diese auch zum Editieren anzeigen lassen, um Dienste in Anspruch zu nehmen. Banking wird mit einem Überweisungsformular bewerkstelligt. Im Onlineshop müssen zum Abschluss des Bestellvorganges Adresse und Bankverbindung in einem Formular hinterlassen werden. Selbst jede Email oder jeder Blogeintrag wird über ein Formular verfasst.
Formulare in HTML haben jedoch ihre Tücken. Zum einen entstehen durch eine unsaubere Programmierung Sicherheitslücken, zum anderen ist es ein leidiger routinemäßiger Prozess die Daten im Formular mit Daten im Backend synchron zu halten, um die Daten dann auch verarbeiten zu können. Zusätzlich müssen Eingabedaten validiert und eventuell auch in andere Formate konvertiert werden. Moderne Webseiten bieten Möglichkeiten schon während der Eingabe mit Hilfe von AJAX-Requests an den Server zu reagieren und die Webseite und damit die Formulare entsprechend anzupassen.
Um all diese Prozesse zu vereinfachen, wurden die Java Server Faces (JSF) entwickelt. Sie dienen dazu mit Hilfe des Model-View-Controller-Patterns den View vom Model zu trennen und einen standardisierten sicheren Prozess für die Verarbeitung von Eingaben zu definieren. Dabei werden die Java Server Faces nicht zu unrecht als eine Erweiterung oder sogar Ersetzung der Java Server Pages (JSPs) bezeichnet.
Dieser Kurs führt in die professionelle Entwicklung in die Java Server Faces (JSF) ein. Dabei beginnt er bei den Grundlagen und endet damit, dass Java Server Faces auch mit der Context and Dependency Injection (CDI) genutzt werden. Der Kurs wird von einem Praxisprojekt begleitet. Am Ende des Kurses ist der Student / die Studentin in der Lage, umfangreiche Java-Server-Faces-(JSF)-Projekte selbst aufzusetzen sowie selbständig zu warten.