Struts
Transcription
Struts
Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen Referenten: Fabian Bartelt Jens de Witt 1 Fabian Bartelt & Jens de Witt - Struts (SS 2004) Inhaltsverzeichnis z z z z z z z z z Was ist Struts? Vorkenntnisse Vorgeschichte: Servlets & JSP‘s Model-Komponenten View-Komponenten Controller-Komponenten Struts-Konfiguration Beispielapplikation Literatur Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 2 1 Was ist Struts? ● ● ● ● ● ● ● Struts (englisch: Gerüst) Framework für Webapplikationen Aufbauend auf die Servlet-Spezifikation 2.3 und JSP V. 1.1 Grundstruktur auf MVC-Basis Servlet/JSP-Basis stark strukturiert Gelöste Standardaufgaben Leichteres Verständnis von StrutsApplikationen Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 3 Vorkenntnisse HTTP-Protokoll z JavaBeans z Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 4 2 Vorkenntnisse Die JavaBeans definieren wiederverwendbare, einbettbare, modulare SoftwareKomponenten. Wichtige Merkmale von Beans sind: • Selbstbeobachtung • Eigenschaften • Ereignissse • Anpassung • Speicherung Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 5 Vorgeschichte: Servlet & JSP‘s In der ersten Generation von Internet-Seiten war jede Seite statisch auf dem Webserver abgelegt und durch einen eindeutigen Namen identifiziert. Jedoch kam auch der Wunsch auf, Internetseiten dynamisch auf Änderungen zu generieren. Dies hat folgende Gründe: z Interaktion mit dem Betrachter der Website z Zugriff auf Datenbanken Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 6 3 Vorgeschichte: Servlet & JSP‘s • • • • Wunsch nach dynamischen WebSeiten Entwicklung von CGI Entwicklung von Script-Sprachen wie php & asp Entwicklung der Servlet-Schnittstelle zum Zugriff auf die Java-Welt Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 7 Vorgeschichte: Servlet & JSP‘s Problem bei Servlet‘s: • Der Aufbau einer HTML-Seite mit println()-Anweisung in einem Servlet ist daher sehr aufwändig. • Bei Servlet‘s fehlt die Trennung zwischen Daten und Visualisierung. Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 8 4 Vorgeschichte: Servlet & JSP‘s Lösung: JSP Eine JSP-Seite ist ein umgestülptes Servlet. Der Java-Code wird dabei eingerahmt in sogenannte Java-Scriplets. Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 9 Vorgeschichte: Servlet & JSP‘s Problem: zu viele Java-Skriptlets Lösung: Die Antwort liegt in speziellen benutzerdefinierten Tags (engl. Custom tag libraries). Diese Tags sind in XML formuliert, sodass es mit ihnen erstmals möglich wird, eine Webseite ganz ohne Java-Scriptlets zu formulieren. Ein XMLProzessor kann eine generierte Datei mit Tags dann als korrektes XML validieren. Der Autor der Tags definiert nach außen eine Funktionalität ähnlich den Beans. Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 10 5 Vorgeschichte: Servlet & JSP‘s Das Model-View-Controller-Muster z Model: Daten/Geschäftslogik z View: Darstellungsschicht z Controller: Dialogsteuerung, Kommunikation mit Model und View Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 11 Vorgeschichte: Servlet & JSP‘s Client Server (2) Model (Z.B. EJBs) Controller (Servlet) (1) (3) Browser (4) (5) View (JSP) Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 12 6 Das Struts-Framework Erweiterung der Servlet-/JSP-Architektur z Formularverarbeitung z I18N z Erweiterte JSP-Taglibs z Stärkere Trennung von MVC z Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 13 Struts-MVC-Architektur struts-config.xml ActionForm ActionServlet holt Konfiguration von der struts-config.xml (2) opt. ActionServlet (Controller) (1) Action (3) Browser (Controller) (4) (5) (6) Ausgabe View (JSP) Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) JSP -View holt Daten aus übergebenen JavaBeans Model (JavaBeans) 14 7 Struts - Systemvoraussetzungen Servlet-Container (Spez. 2.3) z JSP-Container (Spez. 1.1) z In unserem Beispiel verwenden wir Tomcat in der Major-Version 5 Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 15 Model-Komponenten Zugriff auf die Geschäftslogik der Anwendung z Grundbedingung: JavaBeans z Zur Generierung der Datenbankklassen wurde der Persistence Layer Torque verwendet. z Beispiel: Benutzer.java z Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 16 8 View-Komponenten View wird mit Hilfe von JSP-Seiten realisiert z Normale JSP-Seiten mit struts-Taglib z Erweiterte tags zur Verarbeitung und Darstellung von Objekten z Darstellung von HTML_Formularen z Formulargebundene Fehlerausgabe z Logik-Tags zur bedingten Darstellung von Informationen z Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 17 View-Komponenten Internationalisierung durch die ApplicationResources.properties z bean:message & html:error -Tag z Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 18 9 View-Komponenten JSP-Seiten und ActionForm –Beans arbeiten Hand in Hand z JSP-Seiten geben die Benutzereingaben an das Bean weiter z Das Bean validiert die Daten und gibt Auswertungsfehler an die JSP zurück. z Wichtige Methoden: reset() und validate() z Beispiel EditbenutzerForm.java z Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 19 View-/Controller-Attribute Daten übergeben Werden als sog. Attribute gespeichert z Können in einer Anforderung, Antwort, Session oder applikationsweit gespeichert werden z Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 20 10 View-/Controller-Attribute Scope Code (Servlet) Page -n. a.request.getAttribute("attr") request request.setAttribute("attr",x) request.getSession().getAttribute("attr") session request.getSession().setAttribute("attr",x) request.getSession().getAttribute("attr") application request.getSession().setAttribute("attr",x) Code (JSP) <jsp:writeBean name=“attr“ property=“prop“ scope=“page“/> <jsp:writeBean name=“attr“ property=“prop“ scope=“request“/> <jsp:writeBean name=“attr“ property=“prop“ scope=“session“/> <jsp:writeBean name=“attr“ property=“prop“ scope=“application“/> Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 21 Controller-Komponenten ● ● ● ● Benutzerspezifische Controller-Logik ist nicht in einem Servlet implementiert, sondern in separaten Action-Klassen ActionServlet ruft die Action-Klassen auf. Das Verhalten der Action wird über die Datei struts-config.xml gesteuert Wichtigste Methode: execute() Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 22 11 Controller-Komponenten Die Action nimmt Eingaben vom Benutzer entgegen, koordiniert den Zugriff auf entfernte Systeme, implementiert die Geschäftslogik und entscheidet, welche View-Komponente dem Benutzer als nächstes angezeigt werden soll. Beispiel: EditbenutzerAction-Klasse Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 23 Struts-Konfiguration • • Obwohl die Action eine Anforderung zur Weiterleitung enthält, ist das eigentliche Ziel der Weiterleitung in der Datei struts-config.xml definiert. Die Datei struts-config.xml bietet jede Menge Optionen für die Konfiguration der Applikation. Diese Konfigurationsdatei ist die zentrale Stelle, an der Aktionen, Formulare und JSP-Seiten zusammengeführt werden. Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 24 12 Struts-Konfiguration Die Datei struts-config.xml kann die folgenden Elemente enthalten: z Datenbankquellen z ActionForm-Klassen z Globale Ausnahmen z Globale Weiterleitungen z Definition von globalen ActionForwards z Action Mappings z Controller-Informationen z Message-Resourcen (I18N) z Plug-Ins Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 25 Beispielapplikation eB*y für Arme MVC-Struktur z Model-Implementation mithilfe eines externen Persistenz-Layers (Torque) z ActionForms z I18N z Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 26 13 Beispiel eB*y für Arme Verwendete Komponenten z Tomcat V.5 z Eclipse (V.2.1.3) z EasyStruts z Struts (V1.1) z MySQL(Major-Version 4) z Torque (Version 3.1) Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 27 Weitere Struts-Konzepte Nested-, template-, tiles-Tags z DynaForms (Formulare ohne Java) z EJBs in Struts z Struts als Client von WebServices z XML in Struts z Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 28 14 Fazit Pro: z Stark strukturiert z Viele gelöste Standardaufgaben z Formularverarbeitung z Erweiterte Taglibs z Leichtere Einarbeitung in vorhande Projekte mit StrutsImplementierungen Contra: z Etwas komplexere Einarbeitung z Performanzeinbuße durch komplexere Struktur Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 29 Literatur z z z Struts –JSP-Applikationen mit Struts, JBoss und Apache Axis Autoren: James Turner, Kevin Bedell Verlag: Addison-Wesley Java Server und Servlets Autoren: Peter Rossbach, Hendrik Schreiber Verlag: Addison-Wesley Handbuch der Java-Programmierung Autor: Guido Krüger Verlag: Addison-Wesley Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 30 15 Links z z z Jakarta Struts Homepage http://jakarta.apache.org/struts/ Torque Persistence Layer http://db.apache.org/torque/ EasyStruts http://easystruts.sourceforge.net/ Fabian Bartelt & Jens de Witt Struts – Java-Framework für WebAnwendungen (SS 2004) 31 16