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



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

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

G s e a s m a t m ar a ch c i h tek e tur u I und IoC

JSP und Servlet Programmierung

Struts 2 Das Imperium schlägt zurück?

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Schlussbewertung FB VI SOFTWAREPROJEKT II WS 09/10 TEAM. Alexander Kalden Dominik Eckelmann Marcel Pierry Julian Heise Besha Taher

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen?

BIF/SWE - Übungsbeispiel

Existierende Systeme I Bibliotheken & Frameworks

Agenda. Clients aus drei verschiedenen Perspektiven: Was ist ein Dialog? Komponentenarchitektur innerhalb eines Dialoges

Programmierung von Client/Server- Anwendungen

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Referenzen Typo3. Blog der Internetagentur Irma Berscheid-Kimeridze Stand: Juni 2015

Eine Anwendung mit InstantRails 1.7

4 Arbeiten mit einfachen Actions

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Beuth Hochschule für Technik Berlin, FB VI Informatik und Medien Software Engineering (SE II), 2. Kapitel: Wir bauen uns eine Web-Applikation.

Java - Webapplikationen

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

3M Helth Information Systems. 3M KAPS PEPP Simulation. Installationsanleitung

Web- Applikationen. in Java-Web

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Programmieren 2 07 JavaFX-Properties und Data-Binding

Internet und WWW Übungen

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

JSP vs. PHP. Ein persönlicher Vergleich. EQUIcon Software GmbH Jena, Jörg Spilling Frankfurter Treffen Agenda

Application Frameworks

Java Kurs für Anfänger Einheit 5 Methoden

How-to: Webserver NAT. Securepoint Security System Version 2007nx

WPF Steuerelemente Listbox, ComboBox, ListView,

Tutorial. In diesem Tutorial möchte ich die Möglichkeiten einer mehrspracheigen Web-Site erläutern.

Architektur des agimatec-validation Frameworks

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

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

Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen. Referenten: Fabian Bartelt Jens de Witt

Workflow Monitoring basierend auf den SemTalk Services. Semtation GmbH

Tutorial -

UI-Architekturen mit JSF

Einleitung. Gliederung. Struts-Framework. Model-View-Controller-Pattern

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Multimedia im Netz Wintersemester 2012/13

Teil 1: IT- und Medientechnik

Konfiguration und Deployment einer hochverfügbaren ADF Anwendung

Server-centric vs. Client-centric Web Applications. BITKOM Software Summit 2014, Frankfurt

6.9 Java Server Pages

Multimedia im Netz. Wintersemester 2011/12. Übung 10. Betreuer: Verantwortlicher Professor: Sebastian Löhmann. Prof. Dr.

Der lokale und verteilte Fall

modern - sharp - elegant

IBM Software Demos Rational Software Delivery Platform - Änderungen an Design und Architektur einer Anwendung

Generatives Programmieren

BIF/SWE 1 - Übungsbeispiel

Web Engineering.

teischl.com Software Design & Services e.u. office@teischl.com

Java: Vererbung. Teil 3: super()

Hilfe zur Urlaubsplanung und Zeiterfassung

Kurzfassung der Studienarbeit

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

white sheep GmbH Unternehmensberatung Schnittstellen Framework

Version Deutsch In diesem HOWTO wird beschrieben wie Sie Ihr vorhandenes PMS-System mit der IAC-BOX verbinden und konfigurieren.

Horstbox VoIP. Stefan Dahler. 1. HorstBox Konfiguration. 1.1 Einleitung

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Im folgenden wird die Outlookanbindung an organice/pi beschrieben.

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Architekturleitfaden. Definieren Sie fachliche Komponenten und implementieren Sie Ihre Aufgaben in technischen Schichten

Ein wichtiges Konzept der Software-Architektur

Adminer: Installationsanleitung

IIS 7.5 mit Exchange Server 2010 OWA FBA Intern und Extern ueber Forefront TMG

Was versteht man unter Softwaredokumentation?

Einführung in die Programmierung

3 Anwendungsarchitektur und Entwicklungsumgebung

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

3. Stored Procedures und PL/SQL

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

BytStorMail SAAS als Relay

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Skalierbare Webanwendungen mit Python und Google App Engine

Objektorientierte Programmierung

Control-M Workload Change Management 8

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Web Sockets mit HTML5. Quelle:

Herzlich willkommen im Modul Web-Engineering

Step by Step Webserver unter Windows Server von Christian Bartl

Design Patterns 2. Model-View-Controller in der Praxis

Anleitung zur Webservice Entwicklung unter Eclipse

Einführung in PHP. (mit Aufgaben)

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

BSV Software Support Mobile Portal (SMP) Stand

Transkript:

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

JSP ein mächtiges Werkzeug! Client JSP Bean Fachlogik JSP Eine JSP empfängt Benutzer-Anfragen, "Requests" erstellt und benutzt Beans, die die Fachlogik aufrufen erzeugt und sendet eine Response oder verzweigt für die Response zu einer anderen JSP Im Prinzip ist damit alles machbar! (c) schmiedecke 07 SE2-11-Anforderungsmanagement 2

JSP Details (Review) Instanziierung und Benutzung von Beans <jsp:usebean>-direktive das angegebene Bean wird gesucht oder instanziiert Problem: verteilte Erzeugung und Verwaltung von Beans Kontexte Kontexte bestimmen die Lebensdauer der Beans Kontexte gemeinsam von allen JSP-s nutzbar application session request page Navigation einfache HTML-Links <jsp:forward> <jsp:redirect> (c) schmiedecke 07 SE2-11-Anforderungsmanagement 3

Modell 1 JSP Bean JSP Client JSP Bean Fachlogik JSP Bean JSP Jede JSP reagiert selbständig auf Benutzeranfragen erstellt und benutzt Beans, die die Fachlogik aufrufen verzweigt ggf. für die Response zu einer anderen JSP (c) schmiedecke 07 SE2-11-Anforderungsmanagement 4

Probleme mit Modell 1 Jede JSP-Seite reagiert selbständig auf Anfragen Verteilte Kontrolle Verteilte Navigation Harte "Verdrahtung" der Anbindung an das "Backend" unübersichtlich uneinheitlich schlecht zu ändern Abhilfe Rückbesinnung auf MVC (c) schmiedecke 07 SE2-11-Anforderungsmanagement 5

MVC - klassisch Model (auch Domain Model oder Fachlogisches Modell) enthält und verwaltet die persistenten Daten und die Fachoperationen darauf View liest die erforderlichen Daten aus dem Model, bereitet sie auf und präsentiert sie. View registriert sich beim Model, um Veränderungen zu erfahren Controller nimmt die Nutzeranfragen entgegen und leitet sie an die zuständigen Stellen weiter. (c) schmiedecke 07 SE2-11-Anforderungsmanagement 6

MVC 2 oder Modell 2 Client JSP Front Controller Servlet Bean Bean Bean Front Controller empfängt alle Requests instanziiert und füllt Beans leitet an die passende Antwort-JSP weiter. JSP JSP JSP liest Beans erzeugt und sendet Response (c) schmiedecke 07 SE2-11-Anforderungsmanagement 7

Front Controller Servlet - Details Attribut-Definition und Benutzung aus einem Servlet Im FacesServlet für Beans benutzt // Save and get a request-scoped value req.setattribute("com.mycompany.req-param", "req-value"); Object value = req.getattribute("com.mycompany.req-param"); // Save and get a session-scoped value HttpSession session = req.getsession(false); if (session!= null) { session.setattribute("com.mycompany.session-param", "session-value"); value = session.getattribute("com.mycompany.session-param"); } // Save and get an application-scoped value getservletcontext().setattribute("com.mycompany.app-param", "app-value"); value = getservletcontext().getattribute("com.mycompany.app-param"); (c) schmiedecke 07 SE2-11-Anforderungsmanagement 8

Front Controller Servlet - Details Forwarding aus einem Servlet: RequestDispatcher rdispatcher = null; rdispatcher = request.getrequestdispatcher("index.jsp"); request.setattribute("error", "test"); try { rdispatcher.forward(request, response); } catch (Exception e) { System.out.println("exception..."); } Redirect analog (c) schmiedecke 07 SE2-11-Anforderungsmanagement 9

Skalierbarkeit von Modell 2 Modell 2 macht Web-Anwendungen beliebiger Größe prinzipiell beherrschbar: klare Trennung zwischen Darstellung und Kontrolle alle Komponenten separat entwickelbar beliebig komplexes Modell anschließbar zentralisierte Ablaufsteuerung Aufgabenteilung zwischen Designern und Programmierern (c) schmiedecke 07 SE2-11-Anforderungsmanagement 10

...dennoch harte Arbeit Front-Controller-Servlet sieht immer ähnlich aus, muss aber jedesmal neu geschrieben werden. Alle Navigationen sind "hart verdrahtet", d.h. die URL steht im Code. Die Zuordnung von Bean-Attributen zu GUI- Komponenten muss einzeln ausprogrammiert werden. Die Zuordnung von Aktionen zu GUI-Ereignissen muss über die Request-Parameter ausprogrammiert werden. Textvarianten und Internationalisierung müssen von Programmieren ist weniger Hand gelöst werden. schlimm als Ändern (c) schmiedecke 07 SE2-11-Anforderungsmanagement 11

Die Antwort heißt Web Application Frameworks Definieren Objekttypen und ihre Zusammenarbeit: immer MVC Bieten (erweiter- oder konfigurierbare) Standardobjekte Ersetzen harte Verdrahtung der Seitennavigation durch Konfiguration Unterstützen die Zuordnung von Beans Unterstützen den Aufbau von GUIs deutlich verbesserte Wiederverwendbarkeit der Komponenten. (c) schmiedecke 07 SE2-11-Anforderungsmanagement 12

Java Web-Frameworks: Apache Struts Java Server Faces Echo Tapestry GWT... (c) schmiedecke 07 SE2-11-Anforderungsmanagement 13

Was leisten Web-Frameworks? Client Controller Action Model FlowManager ViewTemplate 1 : POST() 2 : createaction() 3 : perform() 4 : buisinessmethod() 5 : nextview() 6 : lookup() 7 : forward() (c) schmiedecke 07 SE2-11-Anforderungsmanagement 14

Was leisten Web-Frameworks? Abstrakte Klasse XMLkonfiguriert Bean- Verwaltung XMLkonfiguriert Standard Tags / UI-Komponenten Client Controller Action Model FlowManager ViewTemplate 1 : POST() 2 : createaction() 3 : perform() 4 : buisinessmethod() 5 : nextview() 6 : lookup() 7 : forward() (c) schmiedecke 07 SE2-11-Anforderungsmanagement 15

Kurzer Blick auf Apache Struts Struts - "Mutter aller Web Frameworks" Use Data ActionServlet findet oder erzeugt passendes ActionForm-Objekt und füllt es mit Request-Daten ruft passendes Action-Objekt Action-Objekt ruft Fachlogik nutzt und ändert Daten in ActionForm-Objekt erzeugt ActionForward-String ActionServlet selektiert JSP aufgrund des ActionForward-Strings verzweigt dorthin Quelle: jsptutorial.org JSP/Servlet nutzt ActionForm-Daten erzeugt und sendet Response (c) schmiedecke 07 SE2-11-Anforderungsmanagement 16

Struts - Konzepte ActionForm und Action sind abstrakte Klassen, die der Benutzer erweitert. Das ActionServlet ist fertig es wird durch eine xml-datei konfiguriert: stuts-config.xml enthält insbesondere auch die Navigation in Abhängigkeit von ActionForward-Strings Für die Gestaltung der Oberfläche und die Interaktion gibt es eine komfortable "Tag-Library" Details dazu hoffentlich in einem Fachvortrag! (c) schmiedecke 07 SE2-11-Anforderungsmanagement 17

Java Server Faces - JSF Java Server Faces gilt als Nachfolge-Technologie zu Struts "Vater" ist der Struts-Designer J.McCallahan JSF-Ziele Web-Frontendgestaltung mit Fertigkomponenten erweiterbare Komponentenbibliotheken client- und serverseitige Validierung Visuelle Gestaltung "Zusammenklicken" der Oberflächen visuelle Navigations-Konfiguration Swing-ähnliche Programmierung Ajax-Funktionalität "Eingebaute" Accessability-Unterstüzung Spezifikation es gibt verschiedene Implementierungen (c) schmiedecke 07 SE2-11-Anforderungsmanagement 18

JSF - Features Visuell konfigurierbare GUI-Komponenten mit Listenern (Ajax) verschiedene Technologien möglich (nicht nur JSP) Konfigurierbare Backing Beans mit Abhängigkeiten Data Binding statt explizitem Speichern und Lesen von Daten Validation Konfigurierbare Seitennavigation Internationalisierungs- und Zugänglichkeits-Unterstützung (c) schmiedecke 07 SE2-11-Anforderungsmanagement 19

JSF-Entwicklungsprozess 1. Entwickle ein (Interaktions-)Datenmodell aus Beans 2. Entwirf die GUIs und binde die Datenfelder an das Datenmodell 3. Entwirf die Seitennavigation abhängig von Ergebnissen 4. Führe die "Verdrahtung" im web.xml und facesconfig.xml durch (c) schmiedecke 07 SE2-11-Anforderungsmanagement 20

Backing Beans und Data Binding class MailBean { String mailprovider; String mailaddress; AddressBean ref; JSP } class AddressBean { String surname; String Address; }... File register.jsp <f:view> <h:form> <b>please provide your name</b><br/> <h:outputtext value="name*"/></td> <h:inputtext id="name" required="true" value="#{address.surname}" size="20"> <f:validatelength minimum="2" maximum="12"/> </h:inputtext> <h:message for="name" style="color: red;"/> <p>... </f:view> (c) schmiedecke 07 SE2-11-Anforderungsmanagement 21

Welche Beans werden "gemanaged"? Alle, die in faces-config.xml aufgelistet werden: <managed-bean> <managed-bean-name>address</managed-bean-name> <managed-bean-class> firstform.addressbean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>mail</managed-bean-name> <managed-bean-class> firstform.mailbean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>ref</property-name> <value>address</value> </managed-property> </managed-bean> class MailBean { String mailprovider; String mailaddress; AddressBean ref; } class AddressBean { String surname; String Address; } (c) schmiedecke 07 SE2-11-Anforderungsmanagement 22

JSF- Statische Seitennavigation register.jsp enthält: <h:commandbutton id="submit" action="submitted" value="submit" /> faces-config.xml enthält: <navigation-rule> <from-view-id>/register.jsp</from-view-id> <navigation-case> <from-outcome>submitted</from-outcome> <to-view-id>/welcome.jsp</to-view-id> </navigation-case> </navigation-rule> (c) schmiedecke 07 SE2-11-Anforderungsmanagement 23

JSF - Dynamische Navigation register.jsp enthält: <h:commandbutton id="submit" action="#{mailbean.checkmailaddress}" value="submit" /> faces-config.xml enthält: <navigation-rule> <from-view-id>/register.jsp</from-view-id> <navigation-case> <from-action>#{mailbean.checkmailaddress}</from-action> <from-outcome>valid</from-outcome> <to-view-id>/welcome.jsp</to-view-id> </navigation-case> class MailBean { String mailprovider; String mailaddress; AddressBean ref; String checkmailaddress(); } <navigation-case> <from-action>#{mailbean.checkmailaddress}</from-action> <from-outcome>invalid</from-outcome> <to-view-id>/invalidmail.jsp</to-view-id> </navigation-case> </navigation-rule> (c) schmiedecke 07 SE2-11-Anforderungsmanagement 24

Anschluss der Fachlogik: Methodenaufruf in BackingBeans Als Action einer Command-Komponente, z.b. Button Aufruf einer parameterlosen Methode mit String-Ergebnis Auswertung ergibt das "outcome"-argument <h:commandbutton id="submit" action="#{mailbean.checkmailaddress}" value="submit" /> Aufruf aus einer Getter- oder Setter-Methode heraus: alle Bean-Zugriffe laufen über Getter und Setter von hier aus kann sogar ein Datenbank-Zugriff programmiert werden... Über Komponenten-Listener (c) schmiedecke 07 SE2-11-Anforderungsmanagement 25

"Verdrahtung" - Konfiguration Deployment-Deskriptor web.xml Spezifikation des FacesServlet in web.xml url-mapping: Alle anfragen an das Wurzelverzeichnis werden an das FacesServlet weiter gegeben: JSF-Deskriptor faces-config.xml Liste der Managed Beans Liste der Navigationsregeln gehört ins WEB-INF Verzeichnis ("neben" web.xml) JSF-Bibliotheken einbinden gehören ins WEB-INF Verzeichnis, Unterverzeichnis lib (c) schmiedecke 07 SE2-11-Anforderungsmanagement 26

Faces Servlet in web.xml spezifizieren Faces-Servlet als zentralen Einstiegspunkt definieren <!-- Faces Servlet --> <servlet> <servlet-name>faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.facesservlet</servlet-class> <load-on-startup> 1 </load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>faces Servlet</servlet-name> <url-pattern>myapp/*</url-pattern> </servlet-mapping> (c) schmiedecke 07 SE2-11-Anforderungsmanagement 27

JSF- Bibliotheken jsf-api.jar jsp-impl.jar jstl.jar standard.jar commons-beanutils.jar commons-digester.jar commons-collections.jar commons-logging.jar (c) schmiedecke 07 SE2-11-Anforderungsmanagement 28

Modell 2 mit JSF Client Fertigteil von JSF Faces Servlet Bean Bean FacesServlet empfängt alle Requests füllt Beans leitet an die passende Antwort-JSP weiter. JSP JSP Bean FacesContext instanziiert die Beans JSP xml-konfiguriert statt "hart verdrahtet" JSP liest Beans erzeugt und sendet Response (c) schmiedecke 07 SE2-11-Anforderungsmanagement 29

Und der Clou: Visuelle GUI-Gestaltung und Ajax-Funktionalität (c) schmiedecke 07 SE2-11-Anforderungsmanagement 30

... und Visuelle Navigations-Programmierung (c) schmiedecke 07 SE2-11-Anforderungsmanagement 31

Web-Programmierung kann ja so einfach sein... oder?