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