Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.

Slides:



Advertisements
Ähnliche Präsentationen
Cloud42 Dominik Muhler Seminar StuPro cims cims.
Advertisements

www.materna.de1 Evaluierung einer aus Open Source Komponenten bestehenden J2EE Umgebung Marcus Jäger ~ Fachinformatiker Anwendungsentwicklung ~
Software Engineering Praktikum SS 2003
Software Engineering Praktikum WS 2002/03
Kapselung , toString , equals , Java API
Was ist J2EE Die Vorteile von J2EE J2EE Modell Die Komponente von J2EE
WS06/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen Übersicht zur Vorlesung.
1 Prof. Dr. Andreas SchmietendorfWS06/07 – Labor C/S-Programmierung Übung 4 Mehrstufige Client/Server-Systeme mit JSPs, Servlets und JavaBeans (Web-Container)
eXist Open Source Native XML Database
Bastian Cramer, Universität Paderborn Entwurfsmuster für Webanwendungen Projektgruppe: Generierung von Webanwendungen aus visuellen Spezifikationen.
Java 2 Enterprise Edition (J2EE)
Daniel Höfler Markus Thurner XMLApplicationPlatform Siemens OpenStage 60/80.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Information und Technik Nordrhein-Westfalen Das personalisierte Portal Düsseldorf, Das personalisierte Portal.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
Tomcat (I) Ende 1999 Jakarta-Projekt von Apache, IBM und Sun gegründet
Remo Bergmann1 Frameworks Allgemeines zu Frameworks MVC-Pattern Einordnung der MVC-Frameworks Andere Frameworks Diskussion.
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Struts Seminar Javabasierte Webanwendungen. Tobias Kutzler2 Überblick Historie Was ist Struts? Model Controller View Zusammenfassung.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
NetUSE Web Application Framework Kai Voigt NetUSE AG 28. Februar 2003.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Web-Anwendungsentwicklung à la MVC. Übersicht Über Georg Heeg Ein industrielles Beispiel Web-Anwendungen aus Smalltalker-Sicht MVC für das Web Programmierdemo.
Systementwicklungsprojekt:
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Konzeption und Realisierung einer
FQTQ ShowCase Prototyp einer Applikation zur Beratungsunterstützung.
Coccon das Web-XML-Publishing System Thomas Haller.
Einführung Servlets/JSPs
Herzlich Willkommen… welcome… soyez la bienvenue….
Wir bauen uns eine Webapplikation!
Seminar Internet - Technologie
Seminar Web-Anwendungen mit JSP u. ASP.NET entwickeln JavaServer Faces Vortragender: Thomas Dermin Custom-Components.
Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3.
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Robotron – Titel der Präsentation Martin Kunze,
TUM Hauptseminar Web Services – Water und JWIG Folie 1 Hauptseminar Web Services Sprachen I: Water und JWIG Andreas Töllich TU München, Lehrstuhl für Informatik.
EJB-Applikationsserver
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Mahmoud Zoabi Khaled Isa
Bean Validation JSR-303 Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Turbine Konzepte und Dienste
Java Server Pages Sergej Keterling
JavaServer Faces Urs Frei. Inhalt JSF Funktionsweise Rückblick JSP Bestandteile von JSF So einfach ist die Anwendung (Beispiel) Eclipse im Einsatz (Entwicklungsumgebung)
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Einführung in Web Services Web Services in der Praxis
Frameworks zur Implementierung von Hypertext Anwendungen
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
TURBINE. Einführung Seit 1999 Java-Framework Integration in Webserver Open Source MVC Muster wird umgesetzt.
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Frameworks
J2EE-Motivation(I) Anforderungen an heutige Software u.a.:
Marcel Genzmehr 1 Javabasierte Webtechnologien Web Application Framework Turbine.
/14Mohamed Sabbar, Medieninformatik - Fachseminar 14/12/09 Java Server Faces (JSF) „JSF“ ist mehr als nur eine Insel Fachseminar WS 09/10 Mohamed Sabbar.
Java 2 Enterprise Edition (J2EE) Sascha Baumeister Software Architect Specification Lead JSR086 IBM Deutschland Entwicklung GmbH
1 JavaServer Pages Stephan Baldes JavaServer Pages Einführung
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
Freelance Cakephp Programmierer. Wir empfehlen das CakePHP System, um eine schnelle Entwicklung von Webanwendungen sicherzustellen. CakePHP ist ein bewährtes.
Forms 9i - New FeaturesSeite 1 Forms 9i New Features Gerd Volberg OPITZ CONSULTING GmbH.
© 2012 TravelTainment Einführung in Enterprise JavaBeans Seminarvortrag von Ralf Penners Folie 1 von 34.
Oracle ADF FacesSeite 1 Oracle ADF Faces OPITZ CONSULTING Oracles Implementierung der JavaServer Faces Spezifikation.
© 2008 TravelTainment The Amadeus Leisure Group Webanwendungen mit Java - HttpServlets 17.Dezember 2010 Sebastian Olscher Erstprüfer: Hon.-Prof. Dr. H.
© 2004 Model-View-Control Pattern (MVC) Das Model-View-Control Pattern.
Das Entwurfsmuster Model-View-Controller
Jakarta Struts Quasi-Standard für JSP-basierte Entwicklung: Jakarta Struts Key Features von Struts: Implementierung des Action-Command-Pattern („Model.
 Präsentation transkript:

Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration Konfiguration Fazit Fazit

Open Source Framework für Web- Anwendungen Open Source Framework für Web- Anwendungen Kompatibel zur J2EE Plattform Kompatibel zur J2EE Plattform Teil des umfangreichen Apache Jakarta Projekts Teil des umfangreichen Apache Jakarta Projekts Struts: bautechnischer Ausdruck (engl.) für Verstrebungen, Abstützungen Struts: bautechnischer Ausdruck (engl.) für Verstrebungen, Abstützungen basiert auf Standard Java APIs basiert auf Standard Java APIs basiert auf Model-View-Controller-Pattern basiert auf Model-View-Controller-Pattern basiert auf JSP- und Servlet-Technologie basiert auf JSP- und Servlet-Technologie aktuelle Version ist Struts 1.3 aktuelle Version ist Struts 1.3

2000: 2000: Craig R. McCalahan Craig R. McCalahan war auch federführend bei der Entwicklung von Java-Server-Faces war auch federführend bei der Entwicklung von Java-Server-Faces Entwicklung eines MVC Frameworks für Java- Plattform Entwicklung eines MVC Frameworks für Java- Plattform Januar 2001: Januar 2001: Apache Software Foundation veröffentlicht MVC Framework: Struts Apache Software Foundation veröffentlicht MVC Framework: Struts

Bewährte Architekturen und Entwurfsmuster können benutzt werden, anstatt sie immer wieder neu zu implementieren Bewährte Architekturen und Entwurfsmuster können benutzt werden, anstatt sie immer wieder neu zu implementieren Erleichterung von Standardaufgaben in Web-Anwendungen: Erleichterung von Standardaufgaben in Web-Anwendungen: Formularbehandlung Formularbehandlung Mehrsprachigkeit Mehrsprachigkeit Schnellere Entwicklungszeiten Schnellere Entwicklungszeiten Statt unschönem HTML-Code (hoffentlich) schönere JSP CustomTags Statt unschönem HTML-Code (hoffentlich) schönere JSP CustomTags

Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Die Struts Konfiguration MVC Architektur (Model 2) MVC Architektur (Model 2) Model: z.B.: JavaBeans, EJBs, Datenbank, EIS,... Model: z.B.: JavaBeans, EJBs, Datenbank, EIS,... View: JSP View: JSP Controller: Teile von Struts und eigene Controller Klassen Controller: Teile von Struts und eigene Controller Klassen Mehrsprachigkeit Mehrsprachigkeit JSP Taglibs JSP Taglibs Server- und clientseitige Eingabevalidierung möglich Server- und clientseitige Eingabevalidierung möglich XML basierte Konfiguration für die Formularnavigation XML basierte Konfiguration für die Formularnavigation Tiles Framework zur Steuerung des Layouts Tiles Framework zur Steuerung des Layouts Deklaratives Exception Handling Deklaratives Exception Handling

ActionServlet ActionForm Action JSP TagLibs struts-config.xml Action ActionForm JSP Controller View Model Struts Anwendung Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Die Struts Konfiguration http response http request

Das Action Servlet Struts Übersicht Die Action Form Klassen Die Action Klassen Die Struts Konfiguration Ablaufsteuerung Ablaufsteuerung Zentrale Controller-Instanz der Struts Web- Anwendung Zentrale Controller-Instanz der Struts Web- Anwendung Wird über ein Konfigurationsfile (struts- config.xml) gesteuert Wird über ein Konfigurationsfile (struts- config.xml) gesteuert Nimmt Parameter aus den Formularen entgegen und füllt damit die ActionForm Objekte Nimmt Parameter aus den Formularen entgegen und füllt damit die ActionForm Objekte Leitet die ActionForm Objekte nach erfolgreicher Validierung an die Action Objekte weiter Leitet die ActionForm Objekte nach erfolgreicher Validierung an die Action Objekte weiter

Die Action Form Klassen Struts Übersicht Das Action Servlet Die Action Klassen Die Struts Konfiguration Erlauben eine einfache Übernahme der Formulardaten in die Properties einer JavaBean Klasse Erlauben eine einfache Übernahme der Formulardaten in die Properties einer JavaBean Klasse Vorbelegung von Formularfeldern mit Werten aus den JavaBean Properties Vorbelegung von Formularfeldern mit Werten aus den JavaBean Properties Jedes HTML-Eingabefeld besitzt ein gleichnamiges Bean- Property im ActionForm Jedes HTML-Eingabefeld besitzt ein gleichnamiges Bean- Property im ActionForm Optional können die übernommenen Eingabewerte in einer validate() Methode überprüft werden Optional können die übernommenen Eingabewerte in einer validate() Methode überprüft werden Werden abgeleitet von org.apache.struts.action.ActionForm Werden abgeleitet von org.apache.struts.action.ActionForm

… … AddressForm name firstName name firstName validate() addressDetails.jsp ActionForm Die Action Form Klassen Struts Übersicht Das Action Servlet Die Action Klassen Die Struts Konfiguration Verbindung zwischen der Aktion SaveAddress und der Klasse AddressForm laut struts-config.xml Verbindung durch die Namensgleichheit des JSP Tag Attribut-Werts und des JavaBean Property-Namens

Neben der validate() Methode in der ActionForm Klasse kann die Validierung auch deklarativ über eine XML Datei erfolgen. Neben der validate() Methode in der ActionForm Klasse kann die Validierung auch deklarativ über eine XML Datei erfolgen. Dazu beinhaltet Struts eine Reihe von Standard- Validatoren (z.B. für Beträge, Zahlen, Adresse,...) und stellt dazu Standard-Fehlermeldungen bereit. Dazu beinhaltet Struts eine Reihe von Standard- Validatoren (z.B. für Beträge, Zahlen, Adresse,...) und stellt dazu Standard-Fehlermeldungen bereit. Einer dieser Validatoren ("mask") kann über Regular Expressions parametrisiert werden. Damit lassen sich die meisten Einzelfeldprüfungen realisieren. Einer dieser Validatoren ("mask") kann über Regular Expressions parametrisiert werden. Damit lassen sich die meisten Einzelfeldprüfungen realisieren. Mit einem Eingabefeld können mehrere Validatoren verknüpft werden. Mit einem Eingabefeld können mehrere Validatoren verknüpft werden. Die Action Form Klassen Struts Übersicht Das Action Servlet Die Action Klassen Die Struts Konfiguration

public class AddressForm extends ActionForm { private String name; private String firstName; Getter und Setter Methoden... public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if ((name == null) || (name.equals(""))) { errors.add("name", new ActionMessage("detail.error.name.required")); } return errors; } public class AddressForm extends ActionForm { private String name; private String firstName; Getter und Setter Methoden... public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if ((name == null) || (name.equals(""))) { errors.add("name", new ActionMessage("detail.error.name.required")); } return errors; } Textschlüssel Ein leeres errors Object steht für eine erfolgreiche Validierung AddressForm.java Die Action Form Klassen Struts Übersicht Das Action Servlet Die Action Klassen Die Struts Konfiguration Implementierung der validate() Methode ist optional

... <html:form <html:form.... Das Tag benötigt diese beiden Textschlüssel Mit diesem Tag werden alle Fehlermeldungen im ActionErrors Object ausgegeben errors.header = Eingabefehler errors.footer = detail.error.name.required=Bitte geben Sie einen Namen ein ! detail.error. .noat= - Address enthält ! errors.header = Eingabefehler errors.footer = detail.error.name.required=Bitte geben Sie einen Namen ein ! detail.error. .noat= - Address enthält ! MessageResource.properties AddressDetails.jsp Die Action Form Klassen Struts Übersicht Das Action Servlet Die Action Klassen Die Struts Konfiguration

Erweiterung der Funktionalität durch Tag-Bibliotheken Bean-Tags Bean-Tags Zugriff auf Beans und deren Properties (get/set) Zugriff auf Beans und deren Properties (get/set) HTML-Tags HTML-Tags Form Tags (z.B., ) Form Tags (z.B., ) Tag Attribute für JavaScript (z.B. Event Handling) Tag Attribute für JavaScript (z.B. Event Handling) Mehrsprachigkeit Mehrsprachigkeit Logic-Tags Logic-Tags Bedingte Textausgabe Bedingte Textausgabe Iteration über Objekt-Collections ( ) Iteration über Objekt-Collections ( ) Anwendungsfluss-Management Anwendungsfluss-Management Existenzprüfung ( ) Existenzprüfung ( ) JSTL JSP Standard Tag Library JSTL JSP Standard Tag Library Iterationen, Kontrolle, Import via ftp oder http, XML, Datenbanken … Iterationen, Kontrolle, Import via ftp oder http, XML, Datenbanken … Die Action Form Klassen Struts Übersicht Das Action Servlet Die Action Klassen Die Struts Konfiguration

Die Action Klassen Struts Übersicht Das Action Servlet Die Action Form Klassen Die Struts Konfiguration Sind Teil des Contollers und stellen die Verbindung zum Model her Sind Teil des Contollers und stellen die Verbindung zum Model her Werden abgeleitet von org.apache.struts.action.Action Werden abgeleitet von org.apache.struts.action.Action Bearbeiten den Request bzw. die Daten aus dem ActionForm Objekt Bearbeiten den Request bzw. die Daten aus dem ActionForm Objekt Erzeugen eine Ausgabe über den Response oder leiten zu einer Ausgabeseite weiter Erzeugen eine Ausgabe über den Response oder leiten zu einer Ausgabeseite weiter müssen Thread-Safe sein, da das Struts Framework nur eine Instanz pro Klasse hält müssen Thread-Safe sein, da das Struts Framework nur eine Instanz pro Klasse hält Das gewünschte Verhalten wird durch Überschreiben der execute() Methode implementiert Das gewünschte Verhalten wird durch Überschreiben der execute() Methode implementiert

public ActionForward execute(ActionMappin, ActionForm, HttpServletRequest, HttpServletResponse) { … // Zugriff auf Session und Adress-Liste ablegen HttpSession session = httpServletRequest.getSession(); List addressList = (List )session.getAttribute("list"); … // Umleiten auf entsprechende JSP-Seite // (in struts-config.xml konfiguriert) return actionMapping.findForward("continue"); } Business Logik Zeile AddressAction.java Mapping Namen für die Folgeseite

Die Struts Konfiguration Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Identifikation der Elemente einer Struts Anwendung erfolgt über logische Namen (Mapping) Identifikation der Elemente einer Struts Anwendung erfolgt über logische Namen (Mapping) Zuordnung logischer Namen zu Java Server Page, Servlet, Klasse Zuordnung logischer Namen zu Java Server Page, Servlet, Klasse Start der Anwendung: Einlesen erzeugt Mapping-Tabelle Start der Anwendung: Einlesen erzeugt Mapping-Tabelle

... action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml action *.do... web.xml Struts Konfigurationsdatei Die Struts Konfiguration Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen

<form-bean name="addressForm" type="adressbook.AddressForm"/>... (siehe nächste Folie) Anwendungs-globales Mapping von Namen auf Seiten Zuordnung von Formularnamen zu ActionForm Klassen (diese Namen werden im Action- Mapping benötigt) Konfiguration einer Aktion struts-config.xml Die Struts Konfiguration Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen

<action path="/SaveAddress" type="adressbook.AddressAction" name="addressForm" input="/addressDetail.jsp" scope="request" validate="true"> <forward name="continue" path="/List.do" /> struts-config.xml Die Struts Konfiguration Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Mapping Name laut web.xml URL-Mapping Klassenname der Action-Subklasse Name der vorher definierten ActionForm In der Action Klasse lokal gültige Namen für Weiterleitungen validate() in der ActionForm aufrufen validate() in der ActionForm aufrufen

list.title=Willkommen im Addressbuch MessageResource_de.properties AddressDetails.jsp Textschlüssel für die Struts-Tags struts-config.xml Die Struts Konfiguration Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen Name (Präfix) der Property-Files mit den Text-Ressourcen

Die Struts Konfiguration Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen layout.jsp <definition name="templateDefinition path="/layout.jsp"> <put name="title value="This is the title." /> <put name="header value="header.jsp" /> <put name="body value="body.jsp" /> <put name=footer value=footer.jsp" /> struts-config.xml header.jsp body.jsp footer.jsp

Vorteile: Vorteile: Komplexe Webanwendung wird in kleine Komponenten aufgeteilt (Bottom Up) Komplexe Webanwendung wird in kleine Komponenten aufgeteilt (Bottom Up) Anwendung leicht erweiterbar und Komponenten durch Trennung wiederverwendbar Anwendung leicht erweiterbar und Komponenten durch Trennung wiederverwendbar Für grosse Anwendungen geeignet Für grosse Anwendungen geeignet Bei Wachstum der Anwendung bleiben Überblick und Variabilität erhalten Bei Wachstum der Anwendung bleiben Überblick und Variabilität erhalten Nachteile: Nachteile: Aufteilung der Anwendung in Komponenten hohe Komplexität Aufteilung der Anwendung in Komponenten hohe Komplexität Noch in Weiterentwicklung und Veränderung Änderungen im Code möglicherweise nötig Noch in Weiterentwicklung und Veränderung Änderungen im Code möglicherweise nötig Das Erstellen der Konfigurationsdatei ist sehr fehlerträchtig die XML Attributnamen sind oft wenig intuitiv Das Erstellen der Konfigurationsdatei ist sehr fehlerträchtig die XML Attributnamen sind oft wenig intuitiv Action-Klasse muss Thread-Safe sein (jeweils nur eine Instanz) Action-Klasse muss Thread-Safe sein (jeweils nur eine Instanz) Einführung von Struts erfordert Refactoring der Applikation Einführung von Struts erfordert Refactoring der Applikation

Struts Home Struts Home Wikipedia Wikipedia Buch Java-EE 5 Addion-Wesley ISBN: Buch Java-EE 5 Addion-Wesley ISBN: