JSF Basics. Ralf Gitzel



Ähnliche Dokumente
JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Fortgeschrittene JSF- Techniken. Ralf Gitzel

Einführung. Ralf Gitzel

JSP Übung. JEE Vorlesung Teil 7. Ralf Gitzel

Persistenz. Ralf Gitzel

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

Einführung Servlets. JEE Vorlesung Teil 2. Ralf Gitzel

Multimedia im Netz Wintersemester 2012/13

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel

FH LU JEE Vorlesung SS Ralf Gitzel

Web-Anwendungen mit JavaServer Faces

Session Beans & Servlet Integration. Ralf Gitzel

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Programmierung von Client/Server- Anwendungen

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

JSP und Servlet Programmierung

Benutzeroberflächen mit JSF 2.2

Tables und weitere Elemente. Ralf Gitzel

Scriptless JSP. Motivation. Expression Language (EL) JSP Standard Tag Library (JSTL)

D.18 D.20 D Java-Server-Pages. 4 Java-Server-Pages (2) 4.1 Auszeichnungen. 4.2 Deployment. Nachteil von Servlets

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

JavaServer Faces Ein Arbeitsbuch für die Praxis

Enterprise Java Beans Einführung

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Webanwendungen mit Java und JavaServerPages

MVC-II Schematische Aufzeichnung Des MVC (model-2), bei dem zwei Modelle zum Zuge kommen:

Enterprise Java Beans Einführung

FH LU JEE Vorlesung SS Ralf Gitzel

FH LU JEE Vorlesung SS Ralf Gitzel

V by WBR1/BFH-TI 2011 by MOU2/BFH-TI

APEX Datenverwaltung Wo sind die Daten gerade?

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets -

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Programmierung von Java- Webanwendungen. paluno

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen

Hauptseminar Informatik. Java Web Frameworks Alexander Löser

JSP Direktiven. Präprozessor-Anweisungen, die in die JSP-Datei eingebettet sind und vor dem eigentlichen Übersetzungsvorgang ausgeführt JSP

APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

JSF (JavaServer Faces) Erstellen einer Webseite

Datenbanksysteme SS 2007

Vortrag. Thema: Apache Struts + Tiles

Java - Webapplikationen

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen. Sommersemester Michael Theis, Lehrbeauftragter 1

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können.

3 Schnelleinstieg in die Entwicklung mit JSF *

Sven Haiges Marcel May. JavaServer Faces. Web Development mit dem Standardframework. entwickier.press

Programmieren mit Edipse 3

Es wird das Struts <html:options> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Abschnitt 20: Ein Grundprinzip der Software-Architektur

Workload: 300 h ECTS Punkte: 10

Programmieren mit Eclipse 3

Model-View-Controller

DB-Aspekte des E-Commerce Schwerpunkt: Techniken. Servlets und JavaServer Pages

FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen

Agenda. Einleitung. Einbinden von JSF AJAX Beispiele Komponenten Entwicklung PrimeFaces Praktikum. Was ist JSF Aufbau und Techniken HTML vs.

Der IBM Websphere Portalserver

Enterprise Java Beans Einführung

Play Framework, MySQL, JPA, HQL, HTML, jquery,

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Kurs 1794 Methodische Entwicklung von Benutzungsschnittstellen für Webapplikationen

Application Frameworks

Einleitung. Funktion. Panzenböck Phillipp. Download Installation. Testen. Konfiguration

Probeklausur: Programmierung WS04/05

Modell 2 und JSF. JSP und Modell 1 MVC und Modell 2 Java Web Frameworks und Struts Java Server Faces

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS 2015 PHP MVC. Dr. Christian Senger. PHP MVC 1 von 21

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Web-Design mit JSF und AJAX. Java Enterprise Erkner, Carsten Mjartan

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Web- Applikationen. in Java-Web

Contexts and Dependency Injection. W3L AG

Multimedia im Netz Wintersemester 2012/13

Persistenz. Ralf Gitzel

Enterprise JavaBeans Überblick

Einsatz und Grenzen von Java Server Faces 2.0

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

MVC Ein wichtiges Konzept der Software-Architektur

JavaServer Faces im Detail

Kompendium der Web-Programmierung

JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung

Bash-Skripting Linux-Kurs der Unix-AG

Content Management mit JSR-170 und dem Open Source CMS Magnolia

ÜBUNGS-BLOCK 7 LÖSUNGEN

Funktionen nur wenn dann

Erste Schritte mit JavaServer Faces und MyEclipse. Allgemeines. Erstellen eines JavaServer Faces Projektes

Webtechnologien. Stunde 6 ( ) - HTTP - HTML - Servlets - AJAX. Verschoben haben wir - JSP (Java Server Pages) - JSF (Java Server Faces)

Kurz FAQ - Typo3. Login zum Editieren

Transkript:

JSF Basics Ralf Gitzel ralf_gitzel@hotmail.de 1

Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2

Übersicht Konzepte von JSF Managed Beans Expression Language Grundlegende JSF Tags 3

Konzepte von JSF Ralf Gitzel ralf_gitzel@hotmail.de 4

JEE Architektur (vereinfacht) Request Web Container Response Servlet EJB Container DB Persistence Provider EJB 5

Eigenschaften von Servlets Stärken Flexibel weil nahe am HTTP Protokoll (get/post, manueller Seitenaufbau) Leichter Einstieg für Kenner von Webtechnologien Schwächen Routineaufgaben (Verifizierung, Konvertierung) müssen immer wieder neu programmiert werden Man muss das Web- Paradigma verstehen, um Servlets anwenden zu können 6

Alternativkonzept JSF Neue Tags (z.b. für Fehlermeldungen) Reguläre leere HTML Seite Expression Language (Ausdrücke, z.b. Zugriff auf Beans) JSF Seite JSF Servlet gefüllte HTML-Seite 7

Alternativkonzept JSF Konzept: Wir schreiben HTML-Seiten mit einer erweiterten Tag-Liste und Expression Language Ausdrücken Typische Umsetzung: Im Hintergrund läuft ein Servlet, das diese Seiten in korrektes HTML umsetzt. Überwiegend serverseitige Lösung (unterstützt aber in neueren Versionen AJAX über JavaScript) 8

JSF- technisch Request Web Container Response Fertige HTML Seite JSF Servlet Unfertige Seite (JSF) 9

Wichtige Funktionalitäten in Navigationsregeln Seitentemplates JSF Validierung und Konvertierung von Eingabewerten Event-getriebene GUIs mit komplexen Elementen AJAX Einfache Anbindung an JEE Server 10

Hinweis: JSP vs. JSF JSPs (Java Server Pages) folgen einer ähnlichen Philosophie, sind aber seit JEE 6 deprecated Trotzdem kommen JSPs in vielen Firmen noch zum Einsatz Generell sind JSF mächtiger als JSPs, bauen aber nur indirekt auf den JSP- Konzepten auf 11

Managed Beans Ralf Gitzel ralf_gitzel@hotmail.de 12

Konzept der Managed Bean Managed Beans stehen in der JSF-Seite als zugreifbare Objekte zur Verfügung Eine Managed Bean ist ein normales Java- Objekt (POJO), dessen Lebenszyklus vom Container verwaltet wird Markierung über eine Annotation (Anmerkung: Das Java-Annotationskonzept wird später im Detail erklärt) oder über die faces-config.xml 13

Annotationen einer Managed Bean Markierung der ManagedBean Markierung eines Properties Müssen public sein, sonst sieht der Server sie nicht! Normale Zugriffsmethoden 14

Zugriff auf die Managed Bean Properties können in der JSF Seite verwendet werden (mehr dazu später) Methoden, die keine Parameter haben und String zurückgeben, können aufgerufen werden (mehr dazu später) Weitere Methodenaufrufe sind in neuen Versionen geplant 15

Managed Bean Scope Die bekannten Scopes können mit Managed Beans genutzt werden. Wichtige Scopes: @RequestScoped: Existiert für eine Request. Default-Einstellung, wenn kein Scope definiert wurde. @ViewScoped: Steht in der aktuellen View zur Verfügung (interessant bei mehreren Tabs im Browser) @SessionScoped: Steht während der ganzen Session zur Verfügung @ApplicationScoped: Steht in der ganzen Applikation zur Verfügung 16

Hinweis zum Session Scope Wir müssen nicht mehr explizit Sessions erzeugen und bestücken Die Managed Bean ist jetzt unser Einstiegspunkt in die Session-Information 17

Model-View-Controller Grundidee: Wir trennen die Programmlogik von der Darstellung Vorteile: Darstellung kann leicht ausgetauscht werden Arbeitsteilung: Webdesigner muss keinen Code schreiben Änderungen am Code können leichter vorgenommen werden 18

Umsetzung mit JSFs (Schritte) JSF-Seite als Eingabe Controller: Standard JSF Servlet ruft Managed Beans auf, die über den Modellzugriff und weiteren Kontrollfluss entscheiden Model: Klassen mit Geschäftslogik stellen ein Modell der Wirklichkeit dar Controller: Servlet gibt Ergebnisse an Ausgabe weiter View: JSF zeigt die Ergebnisse an 19

Faustregeln Nie Logik in der JSF programmieren (was ohnehin schwierig ist) Nie Teile der Darstellung im Servlet oder der Geschäftslogik generieren (Übergabe eines HTML Ergebnisstrings etc.) Managed Beans sollten keine Modell- Daten enthalten (nur Kopien davon) Anmerkung: Es gibt wenige Ausnahmen, die Klausur gehört nicht dazu! 20

Managed Bean als Controller Managed Bean Optionen: verweist auf Datenobjekte Speichert die Daten temporär und kopiert sie dann in ein Model Die Managed Bean sollte nicht das Datenobjekt selbst sein (was aber technisch möglich ist) Die Trennung ist leider nicht immer so sauber 21

Expression Language Ralf Gitzel ralf_gitzel@hotmail.de 22

Unified Expression Language Neu eingeführt in der JSF-Version 2.1 Basiert auf der JSP-EL (aus JSP 2.0) und einer älteren Version der JSF-EL (aus JSF 2.0) Hier nur ein Abriss der für uns wichtigen Elemente! Die EL erlaubt uns u.a. Zugriff auf Javaklassen (Methoden und Attribute) 23

Expression Language - Grundsyntax #{Expression} Hier kommt keine Java Syntax zum Einsatz! (Erinnert eher an XSLT.) Rückgabewert wird an dieser Stelle in der HTML Seite eingefügt z.b. ganz normal in Text z.b. in Attributen von Tags 24

Was ist eine Expression? 1. Zugriff auf ManagedBean 2. Zugriff auf andere Objekte 3. Logische Ausdrücke Datei: hellopage.xhtml 25

Problem komplexe Objekte Komplexe Objekte können nicht einfach über diese Form der Expression abgefragt werden! Maps (wie z.b. die impliziten Objekte) Listen etc. 26

Expressions für komplexe Objekte #{x[ y ]} Zugriff auf eine Map X=Map-Name Y=Schlüssel Zugriff auf eine List bzw. ein Array X=List-Name Y=Array/List Index (Mit oder ohne Anführungszeichen) Zugriff auf eine Bean X=Objekt-Name Y=Property Name Die Notation Name.attr ist synonym 27

Wichtiger Hinweis zu Beans Der Property Name ist in der Klasse großgeschrieben Der Property Name ist in der EL kleingeschrieben 28

Expressions als (logische) Ausdrücke #{x lt 10} Operator Verwendung Ist true wenn x keiner als 10 ist. -! Negation (Minus als Vorzeichen, boolsche Negation) * / % div mod Multiplikations- und Divisionsoperatoren + - Additions- und Subtraktionsoperator < <= >= > lt le ge gt Vergleichsoperatoren I ==!= eq ne Vergleichsoperatoren II && and UND or ODER 29

Grundlegende JSF Tags Ralf Gitzel ralf_gitzel@hotmail.de 30

Hinweis JSF hat sehr viele Tags mit sehr vielen Parametern Hier lernen wir nur die absoluten Basics kennen vor allem wenn verschiedene Wege zum gleichen Ziel führen! Anmerkung: Namespaces werden nicht erklärt, sondern als Teil des Tag-Namens präsentiert 31

Übersicht der grundlegenden Tags Tag h:form h:inputtext h:commandbutton Beschreibung Markiert den Bereich einer Seite, der einer HTML- Form entspricht Eingabe eines Textes, der direkt in eine Instanzvariable einer Managed Bean geschrieben wird Abschicken eines ausgefüllten Formulars 32

h:form Markiert den Bereich einer Seite, der einer HTML-Form entspricht Erscheint als <form> in der HTML-Seite Vorteil: Wegen der Managed Bean muss man hier weder Zielservlet noch Method angeben! Attribut Verwendungszweck 33

h:inputtext Eingabe eines Textes, der direkt in eine Instanzvariable einer Managed Bean geschrieben wird Erscheint als Textfeld in der HTML-Seite Attribut value required style/ styleclass title Verwendungszweck Ein EL-Ausdruck, der ein Feld in einer Managed Bean beschreibt, das diesem Wert entspricht (2 Effekte: Wo soll das Ergebnis gespeichert werden und was ist der Default-Wert?) Muss dieses Feld ausgefüllt werden? (True/False) Zur Verwendung von CSS Styles Tooltip Text 34

h:inputtext Der Wert wird bei der ManagedBean in name geschrieben! 35

h:commandbutton Abschicken eines ausgefüllten Formulars Attribut action image value Weitere Verwendungszweck EL-Ausdruck, der eine Methode spezifiziert, die aufgerufen werden soll, wenn dieser Knopf gedrückt wird. Die Methode muss eine Folgeseite (ohne.jsf oder.xhtml) als String zurückgeben und hat keine Parameter. URL eines Bildes, das anstelle des normalen Buttons angezeigt werden soll EL-Ausdruck oder Stringliteral mit der Beschriftung des Buttons style, styleclass, title wie bereits beschrieben 36

h:commandbutton Text auf dem Button Aufzurufende Methode 37

Hinter den Kulissen 38

Lernziele Ralf Gitzel ralf_gitzel@hotmail.de 39

Lernziele Konzept JSF verstehen Managed Beans benutzen können MVC-Konzept richtig nutzen Expression Language verwenden können Programmieren der Schleife Web- Seite/Managed Bean/Model/Web-Seite 40

Übungsaufgabe Ralf Gitzel ralf_gitzel@hotmail.de 41

Projekt anlegen

Deployment Descriptor erzeugen

JSF Einstellungen Ggf. zuerst herunterladen

JSTL Bibliotheken einfügen Herunterladen und reinkopieren

Schritt 1: Wo kann ich die Dateien herunterladen? URL: http://jstl.java.net/download.html Es werden beide Dateien benötigt 46

Weiterleitungs-JSP erstellen Name der eigenen JSF Kleiner Trick, damit wir das Projekt einfach testen können

Erzeugen einer JSF Seite New -> HTML File (Rechtsklick bei Web- Content) XHTML File (Anmerkung: Endung ist nicht.jfs sondern.xhtml, sonst aber wie in der Startseite definiert) Passendes Template (z.b. New Facelet Composition Page, wir löschen den Inhalt ohnehin)

Filename (!) test.xhtml 49

Auswahl der Templates 50

Content löschen 51

Seite editieren

Hallo Welt programmieren 53

Managed Bean entwickeln 54

Abgleich JSF und Bean 55

Zielseite Trägt den Namen, der als Rückgabewert der hello-methode zurückgegeben wurde. (Komplexere Navigation das nächste Mal) 56

Zielseite hellopage.xhtml 57

Zusatzaufgaben Bei Restzeit Personeneingabe aus den alten Übungen programmieren Personenobjekt verwenden, aber nicht als Managed Bean sondern in der Managed Bean 58

Anhang - Debugging Ralf Gitzel ralf_gitzel@hotmail.de 59

Debugging Hinweis Wenn das Programm nicht mehr startet und nicht mal die erste einfache Seite angezeigt wird, kann es sein, dass es beim Deployment einen Fehler gab, der aber Eclipse nicht daran hindert zu starten

Faces-config Achtung: Wenn hier falsche Werte stehen (z.b. nach einem Klassen- Rename) dann findet man den Fehler nur sehr schwer.