Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin...

36
Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom- Components

Transcript of Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin...

Page 1: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln

JavaServer Faces

Vortragender: Thomas Dermin

Custom-Components

Page 2: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Inhaltsverzeichnis – Teil 1

1. Was ist JavaServer Faces?2. ManagedBeans

2.1 Beispiel: ArtikelHandler (Quellcode) 2.2 Beispiel: ArtikelHandler (XML-Konfiguration)

3. JavaServer Faces Expression Language4. Standardkomponentenmodell

4.1 Beispiel: dataTable

5. Live Vorführung: Artikelliste

Seite 2Inhaltsverzeichnis

Page 3: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Inhaltsverzeichnis – Teil 2

6. MVC – Entwurfsmuster7. Benutzerdefinierte Komponenten

7.1 Trennung von Verhalten und Darstellung 7.2 Aufbau einer Komponente 7.3 Das Verhalten 7.4 Die Darstellung 7.5 Verknüpfung von Verhalten und Darstellung

8. Live-Vorführung: Warenkorb-Komponente9. Fazit

Seite 3Inhaltsverzeichnis

Page 4: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Was ist JavaServer Faces?

Ein Framework:- Für Benutzungsschnittstellen- Auf Java-Basis- Für Web-Anwendungen

Technologie basiert auf:- JSP- Servlets

Seite 41. Was ist JavaServer Faces?

Page 5: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

ManagedBeans

Was:- JavaBean- Zur Unterstützung der UI-Komponenten- Teil des Controllers (MVC-Muster)- Verwaltet durch die JSF-Implementierung

Deklaration der ManagedBean:a) Konfiguration in faces-config.xmlb) Verwendung von Annotation

Seite 52. ManagedBeans

Page 6: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

ManagedBean: ArtikelHandlerQuellcode:1. public class ArtikelHandler2. {3. private LinkedList<Artikel> artikelliste;4.5. public ArtikelHandler() { }6.7. public LinkedList<Artikel> getArtikelliste() {…}8. public void setArtikelliste(LinkedList<Artikel> artikelliste){…}9. }

Seite 62.1 Beispiel: ArtikelHandler (Quellcode)

Page 7: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

ManagedBean: ArtikelHandlerXML-Konfiguration(faces-xonfig.xml)1. <managed-bean>2. <description>3. Artikel Handler4. </description>5. <managed-bean-name>6. artikelHandler7. </managed-bean-name>8. <managed-bean-class>9. shop.controller.ArtikelHandler10. </managed-bean-class>11. <managed-bean-scope>12. application13. </managed-bean-scope>14. </managed-bean>

Seite 72.2 Beispiel: ArtikelHandler (XML-Konfiguration)

Page 8: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

JSF Expression Language

Was:- Kleine Scriptsprache zur Auswertung von

Ausdrücken- Basiert auf JSP-EL

Sytax: #{ „JSF-EL-Ausdruck“ }

Beispiel:#{17 + 3}#{artikelHandler.artikelliste} //siehe nächste Seite!

Seite 83. JavaServer Faces Expression Language

Page 9: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Standardkomponentemodell

JSF definiert ein:- hierarchisch- Komponentenmodell- wiederverwendbare UI-Komponentenelemente- Aufbau ähnelt Java-Swing

Seite 94. Standardkomponentenmodell

Page 10: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Standardkomponentemodell

Aufbau:

Seite 104. Standardkomponentenmodell

UIComponent

UIComponentBase

UIForm… …

Page 11: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Komponente: dataTable

Komponente: dataTable- Erzeugt eine HTML Tabelle- Spaltenorientiert (HTML = Zeilenorientiert)- Kombiniert mit einer Zählschleife- „Value“-Attribut erwartet eine Liste/Array von

Objekten- „Var“- gibt den Namen des aktuellen Objekts

an

Seite 114.1 Beispiel: dataTable

Page 12: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Komponente: dataTable

Beispiel: Artikelliste1.<h:dataTable var=“derArtikel“2. value=“#{artikelHanderl.artikelliste}“>3. <h:column>4. <f:facet name=“header“>5. <h:outputText value=“ArtikelNr“ />6. </f:facet>7. <h:outputText value=“#{derArtikel.artikelNr}“ />8. </h:column>x. …viele weitere Spalten können hier definiert werden!y.</h:dataTable>

Seite 124.1 Beispiel: dataTable

Page 13: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Komponente: dataTable

Beispiel: Artikelliste (erzeugter Code)1. <table>2. <thead>3. <tr><th>ArtikelNr</th></tr>4. </thead>5. <tbody>6. <tr><td>1</td></tr>7. <tr><td>2</td></tr>x. … dynamisch: je nach Größe der Liste!y. </tbody>z. </table>

Seite 134.1 Beispiel: dataTable

Page 14: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

MVC-Entwurfsmuster

Beispiel:Der Controller hält View und Modelzueinander konsistent!

Seite 145. MVC-Entwurfsmuster

View(JSP + JSF)

[Artikelliste.jsp]

Model(Java-Klasse)[Artikel.java]

Controller(JavaBean)

[ArtikelHandler.java]

Page 15: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

MVC-Entwurfsmuster

Problem:MVC arbeitet mit Zuständen, aber JSFbasiert auf der Zustandslosen Kommunikationvon HTTP!

Lösung:Speichern des Zustandes des“Komponentenbaumes“ zwischen zwei Anfragen!

Durch den Vergleich des alten mit dem neuenZustandes ergibt sich logisch ob z.b. Werte inKomponente verändert haben: die Folge könnte einValue-Change Event sein. Registrierte Controller könntendarauf reagieren.

Seite 155. MVC-Entwurfsmuster

Page 16: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Live Vorführung:Artikelliste

Page 17: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Verhalten und Darstellung

Trennung von Verhalten(bzw. Zustand) undDarstellung einer Komponente!

Seite 17

UI-Komponente

Verhalten Darstellung(„Renderer“)

7.1 Trennung von Verhalten und Darstellung

Page 18: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Verhalten und Darstellung

1. Vorteil: MVC-Muster Optimierung!

Seite 187.1 Trennung von Verhalten und Darstellung

View(JSP)

[Kundenliste.jsp]:+

Darstellungen der Komponenten

(z.b HTML)

Model(Java-Klasse)[Kunde.java]

Controller(JavaBean)

[KundenHandler.java]+

Verhalten der Komponenten

Page 19: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Verhalten und Darstellung

2. Vorteil: Flexibler Austausch der Darstellungsart!

Seite 197.1 Trennung von Verhalten und Darstellung

Komponente

HTMLSVG

(skalierbare Vektorgrafik)

Page 20: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Aufbau einer Komponente

Seite 207.2 Aufbau einer Komponente

UI-Komponente

Verhaltenklasse Darstellungsklasse(„Renderer“) Tagklasse

Page 21: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Das Verhalten

Aufgabe:Darstellungs-unabhängiges Verhalten realisieren.

1. Datenstruktur inkl. Verwaltungsmethoden2. Speichern des aktuelles Zustandes3. Laden eines alten Zustandes4. Eventerzeugung

Seite 217.3 Das Verhalten

Page 22: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Das Verhalten

Beispiel:Ausgabelabel für eine Eingabekomponente

Seite 227.3 Das Verhalten

Verhaltensklasse der Komponente

Attribut: String label;

Attribut:String forId;

Page 23: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Das Verhalten

Implementierung:1. Benötigte Attribute hinzufügen

(inkl.Verwaltungsmethoden)2. Renderertyp im Konstruktur definieren3. Oberklasse: „UIComponentBase“ ableiten

Seite 237.3 Das Verhalten

Page 24: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Das Verhalten

Implementierung:4. Komponentenfamilie angeben

public String getFamily (){ … }

5. Aktuellen Zustand speichernpublic Object saveState(…){ … }

6. Einen alten Zustand wiederherstellenpublic void restoreState(…){ … }

Seite 247.3 Das Verhalten

Page 25: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Die Darstellung

Aufgabe:Repräsentation der Komponentein die für den Benutzer darstellbare Form.

1. Kodierung der Komponenten in einer Darstellung

2. Decodierung aus der Darstellung in die Komponente zurück

Seite 257.4 Die Darstellung

Page 26: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Die Darstellung

Beispiel:HTML aber auch SVG wäre möglich(d.h. „rendert“)

Seite 267.4 Die Darstellung

Komponente

HTMLSVG

(skalierbare Vektorgrafik)

Page 27: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Die Darstellung

Implementierung:1. Oberklasse „javax.faces.render.Renderer“

ableiten

2. Kodierung der StarttagsencodeBegin(…)

3. Kodierung der KindelementeencodeChildren(…)

Seite 277.4 Die Darstellung

Page 28: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Die Darstellung

Implementierung:4. Kodierung des Endtags

encodeEnd(…)

5. Dekodierung der Request-Paramterund der Komponente zuweisendecode(…)

6. Request-Paramter die nicht String / Object sind Konvertieren:getConvertedValue(…)

Seite 287.4 Die Darstellung

Page 29: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Die Verknüpfung

Aufgabe:Die Verknüpfung der Verhaltensklasse mit derRendererklasse.

1. Angabe der Komponentenfamilie2. Angabe des Renderertyps3. Attribute des Tags der Komponente zuweisen4. Weitere Komponenten-unabhängige Attribute

wie z.b. styleClass für die Angabe von CSS-Klassen im Tag

Seite 297.5 Die Verknüpfung von Darstellung und Verhalten

Page 30: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Die Verknüpfung

Beispiel:Ein Tag verknüpft mit dem HTML-Renderer,der andere denSVG-Renderer.

Seite 307.5 Die Verknüpfung von Darstellung und Verhalten

Verhalten der Komponente

HTML-Renderer

SVG-Renderer

Tag4HTML

Tag4SVG

Page 31: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Die Verknüpfung

Implementierung:1. Ableiten der Oberklasse:

„javax.faces.webapp.UIComponentELTag“2. Alle Attribute des Verhaltensklasse hinzufügen

(inkl. Verwaltungsmethoden)3. Nicht-Verhaltensspezifische

Komponentenattribute hinzufügen z.b. styleClass für CSS-Klassen angabe(ink. Verwaltungsmethoden)

Seite 317.5 Die Verknüpfung von Darstellung und Verhalten

Page 32: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Die Verknüpfung

Implementierung:4. Komponententyp definieren

public String getComponentType()

5. Renderertyp definierenpublic String getRendererType()

6. Im Konstruktur die Werte der Komponente zuweisen

Seite 327.5 Die Verknüpfung von Darstellung und Verhalten

Page 33: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Live Vorführung:Warenkorb-Komponente

Page 34: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Vielen Danke für Ihre Aufmerksamkeit !

Vortragender: Thomas Dermin

Page 35: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Noch Fragen?

Vortragender: Thomas Dermin

Page 36: Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.

Quellenangabe

Müller, Bernd: Java Server Faces: Ein Arbeitsbuch für die Praxis,1. Auflage, Carl Hanser Verlag München, 2006 Wien

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