JavaServer™ Faces und Jakarta Server Faces 2.3 - Bernd Müller - E-Book

JavaServer™ Faces und Jakarta Server Faces 2.3 E-Book

Bernd Müller

0,0

Beschreibung

DAS ARBEITSBUCH FÜR JAVA-WEBENTWICKLER //
- Steigen Sie mit diesem fundierten Arbeitsbuch in die Entwicklung von Benutzerschnittstellen mit JavaServerTM Faces und Jakarta Server Faces 2.3 ein.
- Anhand einer Beispielanwendung werden alle wichtigen Aspekte von JSF erläutert.
- Vertiefen und erweitern Sie Ihre Fertigkeiten mit den zahlreichen Übungen.
- Verwendet werden ausschließlich Open-Source-Systeme, so dass Sie alle Übungen und Beispiele ohne weitere Lizenzkosten nachvollziehen können.
- Im Internet: Quell-Code zu den Beispielen und Lösungen der Übungen auf der Autorenwebsite zum Buch und GitHub
- Ihr exklusiver Vorteil: E-Book inside beim Kauf des gedruckten Buches

JavaServerTM Faces und Jakarta Server Faces 2.3 sind ein Framework für die Entwicklung von Benutzerschnittstellen für bzw. als Teil einer Java-Web-Anwendung. Dieses Arbeitsbuch führt Sie Schritt für Schritt in die Programmierung mit JSF ein. Sie erfahren, wie Sie damit moderne Benutzerschnittstellen für die Praxis entwickeln.
Und natürlich geht es auch darum, wie JSF in eine Java-Web-Anwendung zu integrieren sind. Behandelt werden auch Themen wie die Anbindung an eine Datenbank mit JPA, die Verwendung von CDI sowie Authentifizierung und Autorisierung.
Verfolgen Sie Schritt für Schritt die Entwicklung einer betrieblichen Anwendung und lernen Sie so anhand realer Aufgabenstellungen alle wichtigen Aspekte von JSF 2.3 kennen. Mit Hilfe der Übungen, deren Lösungen sich von der Website zum Buch und von GitHub herunterladen lassen, können Sie das Gelernte selbst ausprobieren und umsetzen.

AUS DEM INHALT //
Einleitung/JSF im Detail/Context und Dependency Injection/Weiterführende Themen/Classic Models/Spezialthemen/Verwendete Systeme/Ausblick/Anhang: Die Tags der Standardbibliotheken

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 571

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Bernd Müller

JavaServer™ Faces und Jakarta Server Faces 2.3

Ein Arbeitsbuch für die Praxis

3., überarbeitete Auflage

Der Autor:

Prof. Dr. Bernd Müller,Ostfalia Hochschule für angewandte WissenschaftenHochschule Braunschweig/Wolfenbüttel – Fakultät für InformatikKontakt: [email protected]

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht. Ebenso übernehmen Autor und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind.Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek:Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt.Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

© 2021 Carl Hanser Verlag München, www.hanser-fachbuch.deLektorat: Brigitte Bauer-SchiewekCopy editing: Petra Kienle, FürstenfeldbruckLayout: der Autor mit LaTeXUmschlagdesign: Marc Müller-Bremer, www.rebranding.de, MünchenUmschlagrealisation: Max KostopoulosAusstattung patentrechtlich geschützt. Kösel FD 351, Patent-Nr. 0748702

Print-ISBN:        978-3-446-45670-9E-Book-ISBN:   978-3-446-45977-9E-Pub-ISBN:     978-3-446-47008-8

Inhalt

Titelei

Impressum

Inhalt

Vorwort zur 3. Auflage

Vorwort

1 Einleitung

1.1 Ziel dieses Buchs

1.2 Was sind JavaServer Faces?

1.3 Der Leser

1.4 Das Buch im Netz

1.5 Versionen, Versionen, Versionen

1.6 Spezifikationen, Implementierungen, Systeme

1.7 Totgesagte leben länger

1.8 Aufbau des Buchs

1.9 Classic Models

2 JavaServer Facesim Detail– die Grundlagen

2.1 Bearbeitungsmodell einer JSF-Anfrage

2.1.1 Wiederherstellung des Komponentenbaums

2.1.2 Übernahme der Anfragewerte

2.1.3 Validierung

2.1.4 Aktualisierung der Modellobjekte

2.1.5 Aufruf der Anwendungslogik

2.1.6 Rendern der Antwort

2.2 Expression-Language

2.2.1 Syntax

2.2.2 Werteausdrücke

2.2.3 Vergleiche, arithmetische und logische Ausdrücke

2.2.4 Methodenausdrücke

2.2.5 Vordefinierte Objektnamen

2.2.6 Collections

2.2.7 Lambdas

2.2.8 Konstanten

2.2.9 Komponentenbindungen

2.2.10 Verwendung der Expression-Language in Java

2.2.11 Weniger sinnvolle Verwendungen

2.3 Managed Beans

2.3.1 Architekturfragen und Namenskonventionen

2.3.2 Context and Dependency Injection

2.3.3 Architekturfragen zum Zweiten

2.3.4 Initialisierung

2.4 Validierung und Konvertierung

2.4.1 Standardkonvertierer

2.4.2 Konvertierung und Formatierung von Zahlen

2.4.3 Konvertierung und Formatierung von Kalenderdaten und Uhrzeiten

2.4.4 Konvertierung von Aufzählungstypen

2.4.5 Anwendungsdefinierte Konvertierer

2.4.6 Standardvalidierer

2.4.7 Validierungsmethoden

2.4.8 Anwendungsdefinierte Validierer

2.4.9 Eingabekomponenten und das immediate-Attribut

2.4.10 Bean-Validierung mit JSR 380

2.4.11 Anwendungsdefinierte Constraints mit Bean Validation

2.4.12 Gruppenvalidierung mit Bean Validation

2.4.13 Validierung auf Klassenebene

2.4.14 Fehlermeldungen

2.4.15 BV-Fehlermeldungen

2.5 Event-Verarbeitung

2.5.1 JSF-Events und allgemeine Event-Verarbeitung

2.5.2 Action-Events

2.5.3 Action-Events und Navigation

2.5.4 Befehlskomponenten mit Parametern

2.5.5 Befehlskomponenten und das immediate-Attribut

2.5.6 Value-Change-Events

2.5.7 Data-Model-Events

2.5.8 Phase-Events

2.5.9 System-Events

2.6 HTML5

2.6.1 Pass-Through-Attribute

2.6.2 Pass-Through-Elemente

2.7 Ajax

2.7.1 Das <f:ajax>-Tag

2.7.2 Komponentengruppen und Ajax

2.7.3 Komponentenabhängigkeiten

2.7.4 Validierung

3 Contexts and Dependency Injection

3.1 Beans, Scopes und Kontexte

3.1.1 Scopes

3.1.2 JSFs @ViewScoped

3.1.3 Kontexte

3.1.4 Ein genauerer Blick auf @Inject

3.1.5 Bean-Manager und programmatischer Zugriff auf Bean-Instanzen

3.2 Mehr Flexibilität mit Qualifiern und Alternativen

3.2.1 Qualifier

3.2.2 Vordefinierte Qualifier

3.2.3 Alternativen

3.2.4 Der Deskriptor beans.xml

3.3 Producer und Disposer

3.3.1 Producer-Methoden

3.3.2 Scopes

3.3.3 Producer-Field

3.3.4 Disposer-Methoden

3.4 Der Conversation-Scope

3.5 Events

3.5.1 Einfache Event-Producer und Observer

3.5.2 Spezialisierung durch Qualifier

3.5.3 Event-Metadaten

3.5.4 Events und Transaktionen

3.6 Interceptoren

3.7 Und was es sonst noch gibt

4 Weiterführende Themen

4.1 Templating

4.1.1 Der grundlegende Template-Mechanismus

4.1.2 Ein realistischeres Beispiel: unsere Projekte

4.1.3 Dynamische Templates

4.2 Internationalisierung und Lokalisierung

4.2.1 Lokalisierung

4.2.2 Dynamische und explizite Lokalisierung

4.2.3 Klassen als Resource-Bundles

4.2.4 Managed Beans und Lokalisierung

4.2.5 Resource-Bundles mit UTF-8-Codierung

4.2.6 Lokalisierte BV-Fehlermeldungen

4.3 Komponenten- und Client-Ids

4.3.1 Id-Arten und Namensräume

4.3.2 Client- und server-seitige Programmierung mit Ids

4.4 Verwendung allgemeiner Ressourcen

4.4.1 Einfache Ressourcen

4.4.2 Versionierte Ressourcen und Ressourcen-Bibliotheken

4.4.3 Positionierung von Ressourcen

4.4.4 Kombination von CSS- und Grafikressourcen

4.5 Ajax zum Zweiten

4.5.1 JSFs JavaScript-Bibliothek

4.5.2 Navigation

4.5.3 JavaScript mit Java

4.5.4 Nicht gerenderte Komponenten

4.5.5 Komponentenbibliotheken

4.5.6 Ajax ohne <f:ajax>

4.5.7 Das <h:commandScript>-Tag

4.5.8 Zu schnelle Benutzer ;-)

4.5.9 JavaScript und Expression-Language kombinieren

4.6 GET-Anfragen und der Flash-Scope

4.6.1 Einfache GET-Anfragen

4.6.2 View-Parameter

4.6.3 View-Actions

4.6.4 Der Flash-Scope

4.7 Zusammengesetzte Komponenten

4.7.1 Schnittstelle und Implementierung

4.7.2 Weitere Möglichkeiten

4.7.3 Packaging und Wiederverwendung

4.8 UI-Komponenten

4.8.1 Die Standardkomponenten

4.8.2 Render-Sätze

4.8.3 Die JSF-Standard-Bibliotheken

4.8.4 Die HTML-Bibliothek

4.8.5 Die Kernbibliothek

4.8.6 Die Templating-Bibliothek (Facelets)

4.8.7 Die Composite-Component-Bibliothek

4.8.8 Die JSTL-Kern- und Funktionsbibliothek

4.8.9 Komponentenbindungen

4.9 Die Servlet-Konfiguration

4.9.1 Der Deployment-Deskriptor

4.9.2 Übersicht Kontextparameter

4.9.3 Zustandsspeicherung

4.9.4 Konfigurationsdateien

4.9.5 Projektphasen

4.9.6 Zugriff auf Konfigurationsdaten

5 JavaServer Faces im Einsatz: Classic Models

5.1 Datenzugriff und Datenmanipulation

5.1.1 Java Persistence API

5.1.2 Enterprise JavaBeans

5.1.3 Transaktionen mit JTA

5.1.4 Data-Sources und Persistence-Units

5.2 JSF im Einsatz

5.2.1 Übersichten

5.2.2 Master-Detail-Pattern

5.2.3 Dynamische Drop-down-Listen

5.2.4 Dynamische UIs

5.3 Authentifizierung und Autorisierung

5.3.1 Zugriffschutz für Ressourcen

5.3.2 Identity Store

5.3.3 Authentifizierungs- und rollenbasierte JSF-Seiten

5.4 Datenexport im PDF- und Excel-Format

5.4.1 PDF-Erzeugung

5.4.2 Excel-Erzeugung

5.5 Testen

5.5.1 Arquillian

5.5.2 Drone und Graphene

5.5.3 Selenium

5.6 H2-Web-Konsole

6 Spezialthemen

6.1 Die JSF-Konfiguration

6.1.1 XML-Konfigurationsdatei versus Annotationen

6.1.2 JSF erweitern: ein eigener Exception-Handler

6.1.3 Programmative Konfiguration

6.2 Web-Sockets

6.2.1 Das Java-API

6.2.2 Globaler Server-Push

6.2.3 Dedizierte Nachrichten an Clients

6.2.4 Zeitaufwendige Berechnungen

6.2.5 Konfiguration

6.3 Resource-Library-Contracts

6.3.1 Globales Mapping von Contracts

6.3.2 Contracts auf View-Ebene

6.3.3 Programmative Konfiguration

6.4 Faces-Flows

6.5 Native Komponenten

6.5.1 Der einfache Einstieg

6.5.2 Komponententyp, Komponentenfamilie und Renderer-Typ

6.5.3 Renderer

6.5.4 Die Zukunft: Web-Komponenten

6.6 JSF als zustandsbehaftetes Komponenten-Framework

6.7 Mobile Endgeräte

6.7.1 Seiteninhalte für unterschiedliche Bildschirmgrößen und Auflösungen

6.7.2 Progressive Web Apps und Web-App-Manifeste

6.8 HTTP/2 Server-Push

6.9 Single-Page-Applications

7 Verwendete Systeme

7.1 WildFly und JBoss EAP

7.2 Payara

7.3 TomEE

7.4 WildFly Bootable JAR

7.5 Payara Micro

8 Ausblick

8.1 Wie geht es weiter mit JSF?

8.2 Andere JSF-Bücher

A Die Tags der Standardbibliotheken

A.1 HTML-Tag-Bibliothek

A.2 Kernbibliothek

A.3 Templating-Bibliothek (Facelets)

A.4 Composite-Component-Bibliothek

A.5 JSTL-Kernbibliothek

A.6 JSTL-Funktionsbibliothek

A.7 Pass-Through-Attribute und -Elemente

B URL-Verzeichnis

Literatur

Vorwort zur 3. Auflage

In der 2. Auflage haben wir die vielen Neuerungen von JSF 2.0 integriert. Die Version 2.1 war eher kosmetischer Natur. Die Version 2.2 brachte wiederum sehr viel Neues, die Version 2.3 ebenso. Es ist also dringend an der Zeit für eine 3. Auflage.

Wie bereits in der 2. Auflage praktiziert, soll auch diese 3. Auflage keine Darstellung aller JSF-Versionen sein. Sie werden daher in der Regel keine Bezüge auf ältere JSF-Versionen, sondern ausschließlich den aktuellen Stand 2.3 beschrieben finden. Damit geht einher, dass einige Abschnitte der früheren Auflagen verschwunden sind, andere erheblich überarbeitet wurden und das Buch damit eine neue Struktur erhalten hat. Mehr noch, Sie halten praktisch ein komplett neues Buch in der Hand.

Während dieses Buch entstand, wurde aus JavaServer Faces 2.3 Jakarta Server Faces 2.3. Diese beiden Spezifikationen sind praktisch identisch, so dass das Buch beide Systeme beschreibt. Wir sprechen im Folgenden immer von JavaServer Faces, meinen aber beide Spezifikationen.

In der 2. Auflage nutzten wir Eclipse als Build-System. Wir haben nun alle Projektbeispiele auf Maven umgestellt und verwenden WildFly als Application-Server. Da die Projektbeispiele nur offizielle APIs verwenden, sind sie auf allen zertifizierten Servern verwendbar.

Januar 2021, Bernd Müller

[email protected]

Vorwort

JavaServer Faces sind ein Framework für die Entwicklung von Benutzerschnittstellen für oder besser als Teil einer Java-Web-Anwendung. Die vorliegende Darstellung führt JavaServer Faces nach dieser Definition ein. Es beschreibt, was JavaServer Faces sind und wie man JavaServer Faces für die Entwicklung moderner Benutzerschnittstellen einsetzt, aber auch, wie JavaServer Faces in eine Java-Web-Anwendung zu integrieren sind. Wir behandeln so elementare Themen wie die Anbindung an ein Persistenz-Framework oder die Anbindung an das Authentifizierungs- und Autorisierungssystem des Servlet-Containers. Ein unverzichtbarer Bestandteil kommerzieller Web-Anwendungen ist die Erzeugung von PDF, z.B. für auszudruckende Rechnungen oder Verträge; auch hierfür werden Lösungen entwickelt. Dem aktuellen Trend Ajax ist ebenfalls Platz gewidmet.

Dem Anspruch eines „Arbeitsbuchs für die Praxis“ wird das Buch gerecht, indem JavaServer Faces anhand eines umfassenden und praxisnahen Beispiels eingeführt werden, ohne zuvor ganze Kapitel über JSF-Grundlagen zu verlieren. Um JavaServer Faces praxisnah einzuführen, werden in den ersten Buchkapiteln keine Grundlagen über Servlets, JSP und JSTL benötigt. Genauso wenig werden Kenntnisse über innere Funktionen einer JVM benötigt, um Java zu programmieren, oder Kenntnisse über B-Baum-Implementierungen, um mit JDBC zu arbeiten. Wo man Servlets und JSPs benötigt, erfolgt jeweils eine kurze Einführung in die benötigten Details. Damit nicht genug, behandelt das Buch umfassend und praktisch alle Details zur Entwicklung von Oberflächen mit JavaServer Faces.

Dieses Buch richtet sich an Leser, die wissen wollen, was JavaServer Faces sind. Es richtet sich aber vor allem an solche, die mit JavaServer Faces entwickeln wollen. „Programmieren lernt man durch Programmieren“. Diesem alten Informatikerspruch werden wir gerecht, weil unser Buch viele praxisnahe Code-Stücke enthält und eine komplette Anwendung implementiert. Alle im Buch dargestellten Code-Stücke stammen aus verschiedenen Beispielprojekten, die von der Website des Buchs heruntergeladen und somit auch praktisch nachvollzogen werden können. Es ist für die Ausbildung von Studenten verschiedener Informatikstudiengänge und für den sich weiterbildenden und im Berufsleben stehenden Praktiker geeignet.

Bernd Müller

Im Sommer 2006

1Einleitung
2JavaServer Faces im Detail – die Grundlagen