Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration."—  Präsentation transkript:

1

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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 … … 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

11 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

12 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

13 ...

14 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

15 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

16 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

17 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

18 ... 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

19 ... (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

20 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

21 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

22 Die Struts Konfiguration Struts Übersicht Das Action Servlet Die Action Form Klassen Die Action Klassen layout.jsp struts-config.xml header.jsp body.jsp footer.jsp

23 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

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


Herunterladen ppt "Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration."

Ähnliche Präsentationen


Google-Anzeigen