hänchen & partner gmbh 1 web-anwendungen mit dem jakarta struts framework 3.juli 2003 martin...

27
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Upload: anne-marie-hensch

Post on 05-Apr-2015

116 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 1

Web-Anwendungen mit dem Jakarta Struts Framework

3.Juli 2003 Martin Burkhardt

Page 2: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 2

Struts ÜbersichtStruts Übersicht

Das Struts Framework

?

Das Action ServletDas Action Servlet

Die Action Form KlassenDie Action Form Klassen

Die Action KlassenDie Action Klassen

Die Struts KonfigurationDie Struts Konfiguration

Page 3: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 3 Hänchen & Partner GmbH 3

Struts Übersicht

Open Source Framework für Web-Anwendungen

Teil des umfangreichen Apache Jakarta Projekts

Struts: bautechnischer Ausdruck (engl.) für „Verstrebungen, Abstützungen“

Basiert auf Standard Java APIs

Aktuelle Version ist Struts 1.1 rc2, diese benötigt:

JDK ab 1.2

Servlet API ab 2.2

JSP ab 1.1

XML Parser, kompatibel zu JAXP ab 1.1

Einen Teil der Jakarta Common Packages

Page 4: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 4 Hänchen & Partner GmbH 4

Motivation - Warum noch ein Framework?

Bewährte Architekturen und Entwurfsmuster können benutzt werden, anstatt sie immer wieder neu zu implementieren.

Erleichterung von Standardaufgaben in Web-Anwendungen:

Formularbehandlung

Mehrsprachigkeit

Schnellere Entwicklungszeiten

Statt unschönem HTML-Code (hoffentlich) schönere JSP CustomTags

Page 5: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 5 Hänchen & Partner GmbH 5

Was bietet Struts?

MVC Architektur (Model 2)

Model: z.B: JavaBeans, EJBs, Datenbank, EIS, ...

View: JSP

Controller: Teile von Struts und eigene Controller Klassen

Mehrsprachigkeit

JSP Taglibs

Server- und clientseitige Eingabevalidierung möglich

XML basierte Konfiguration für die Formularnavigation

Tiles Framework zur Steuerung des Layouts

Deklaratives Exception Handling

Page 6: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 6 Hänchen & Partner GmbH 6

Architektur

ActionServlet

ActionForm

ActionJSP

TagLibs

struts-config.xml

ActionAction

Action

ActionFormActionForm

JSP

httprespons

e

httprespons

e

Controller View

Model

httprequest

httprequest

StrutsAnwendung

Page 7: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 7

Das Struts Framework

Die Action Form KlassenDie Action Form Klassen

Die Action KlassenDie Action Klassen

Die Struts KonfigurationDie Struts Konfiguration

Das Action ServletDas Action Servlet

Struts ÜbersichtStruts Übersicht

?

Page 8: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 8 Hänchen & Partner GmbH 8

Aufgaben

Zentrale Controller Instanz der Struts Web-Anwendung

Wird über ein Konfigurationsfile (struts-config.xml) gesteuert

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

Page 9: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 9 Hänchen & Partner GmbH 9

Registrierung in der Web Anwendung

...<servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param></servlet>

<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern></servlet-mapping>...

Struts Konfigurationsdatei

web.xml

Page 10: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 10

Das Struts Framework

Die Action KlassenDie Action Klassen

Die Struts KonfigurationDie Struts Konfiguration

Die Action Form KlassenDie Action Form Klassen

Das Action ServletDas Action Servlet

Struts ÜbersichtStruts Übersicht

?

Page 11: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 11 Hänchen & Partner GmbH 11

Übersicht ActionForm

Erlauben eine einfache Übernahme der Formulardaten in die Properties einer JavaBean Klasse und umgekehrt die Vorbelegung von Formularfeldern mit Werten aus den JavaBean Properties.

Für die Werte aus den HTML Eingabefeldern gibt es im ActionForm Bean gleichnamige Properties.

Optional können die so übernommenen Eingabewerte in einer validate() Methode überprüft werden.

Pro Formular kann eine solche ActionForm Klasse als Ableitung von org.apache.struts.action.ActionForm implementiert werden.

Page 12: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 12 Hänchen & Partner GmbH 12

Beispiel

<html:form action="simpleInput"> <TABLE border="0"> <TBODY> <TR> <TD>Name</TD> <TD><html:text property="name" /></TD> </TR> ... </TBODY> </TABLE> <html:submit value="ok" /></html:form>

SimpleForm

namewohnort

validate()

Verbindung durch die Namensgleichheit des JSP Tag Attribut-Werts und des JavaBean Property-Namens

Verbindung zwischen der Aktion simpleInput und der Klasse SimpleForm laut struts-config.xmlSimpleForm.jsp

ActionForm

Page 13: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 13 Hänchen & Partner GmbH 13

Validierung und Fehlerbehandlung (1)

public class SimpleForm extends ActionForm{ private String wohnort; private String name; ... ... Getter und Setter Methoden ... public ActionErrors validate(ActionMapping map, HttpServletRequest req) { ActionErrors errors = new ActionErrors(); if((wohnort == null) || (wohnort.length() < 3)) { errors.add("wohnort", new ActionError("error.city.tooshort")); } return errors; }}

Textschlüssel (I18N)Ein leeres errors Object steht für eine erfolgreiche Validierung

SimpleForm.java

Implementierung der validate() Methode ist optional

Page 14: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 14 Hänchen & Partner GmbH 14

...<BODY>

<html:errors/>

<html:form....

Validierung und Fehlerbehandlung (2)

Das <html:errors> Tag benötigt diese beiden Textschlüssel

Mit diesem Tag werden alle Fehlermeldungen im ActionErrors Object ausgegeben

errors.header = Eingabefehlererrors.footer = <hr>

error.city.tooshort = Der Ortsname muss aus mindestens 3 Zeichen bestehen

Resource_de.properties

SimpleForm.jsp

Page 15: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 15 Hänchen & Partner GmbH 15

Validierung und Fehlerbehandlung (3)

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, e-mail 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.

Mit einem Eingabefeld können mehrere Validatoren verknüpft werden.

Page 16: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 16 Hänchen & Partner GmbH 16

JSP Custom TagLibs in Struts

Struts beinhaltet mehrere JSP Tag-Libs:

HTML TagsForm Tags (z.B. <html:form>, <html:text>)

Messages, Error Messages

Tag Attribute für JavaScript (z.B. Event Handling)

Mehrsprachigkeit

Bean TagsManipulation und Ausgabe von JavaBeans

Logic TagsVergleichsoperationen, Iteratoren, etc.

In der J2EE1.4 wird die JavaServer Pages Standard Tag Library (JSTL) enthalten sein. Die meisten der Struts Bean- und Logic-Tags können dann durch JSTL Tags ersetzt werden.

Page 17: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 17

Das Struts Framework

Die Struts KonfigurationDie Struts Konfiguration

Struts ÜbersichtStruts Übersicht

Die Action KlassenDie Action Klassen

Die Action Form KlassenDie Action Form Klassen

Das Action ServletDas Action Servlet

?

Page 18: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 18 Hänchen & Partner GmbH 18

Übersicht Action

Sind Teil des Contollers und stellen die Verbindung zum Model her

Werden abgeleitet von org.apache.struts.action.Action

Bearbeiten den Request bzw. die Daten aus dem ActionForm Objekt

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

Das gewünschte Verhalten wird durch Überschreiben der execute() Methode implementiert

Page 19: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 19 Hänchen & Partner GmbH 19

Die execute Methode

public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest req,HttpServletResponse res)

throws Exception {ActionForward retFwd;

if( ((LoginForm)form).getUserId().equals("Wombat11")){retFwd = mapping.findForward("success");

}else {retFwd = mapping.findForward("register");

}return retFwd;

}

„Business Logik“ Zeile

Mapping Namen für die Folgeseite

SimpleAction.java

Page 20: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 20

Das Struts Framework

Struts ÜbersichtStruts Übersicht

Das Action ServletDas Action Servlet

Die Struts KonfigurationDie Struts Konfiguration

Die Action KlassenDie Action Klassen

Die Action Form KlassenDie Action Form Klassen

?

Page 21: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 21 Hänchen & Partner GmbH 21

struts-config.xml

<struts-config>

<form-beans> <form-bean name="simpleForm" type="hup.kurs.struts.forms.SimpleForm"/> </form-beans>

<global-forwards> ... </global-forwards>

<action-mappings> ... </action-mappings>

</struts-config>

Anwendungs-globales Mapping von Namen auf Seiten

Zuordung von Formularnamen zu ActionForm Klassen (diese Namen werden im action-mapping benötigt)

Konfiguration einer Aktion

struts-config.xml

Page 22: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 22 Hänchen & Partner GmbH 22

Action Mapping

<action-mappings> <action path="/simpleInput" type="hup.action.SimpleAction" name="simpleForm" scope="request" input="/SimpleForm.jsp" validate="true" > <forward name="success" path="/Welcome.jsp"/> <forward name="register" path="/Register.jsp"/> </action></action-mappings>

Mapping Name laut web.xml URL-Mapping

Klassenname der Action-Subklasse

Name der vorher definierten ActionForm

Diese Seite wird bei nicht erfolgreicher Validierung angezeigt

validate() in der ActionForm aufrufen

In der Action Klasse lokal gültige Namen für Weiterleitungen

struts-config.xml

Page 23: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 23 Hänchen & Partner GmbH 23

Mehrsprachigkeit

Name (Prefix) der Property-Files mit den Text-Ressourcen

...label.city = Wohnort...Resource_de.properties

...<bean:message key="label.city"/>... StrutsForm.jsp

Textschlüssel für die Struts-Tags

<message-resources parameter="Resource"/>

struts-config.xml

Page 24: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 24 Hänchen & Partner GmbH 24

Hinweise

Das Erstellen der Konfigurationsdatei ist sehr fehlerträchtig, die XML Attributnamen sind oft wenig intuitiv.

Visuelle Struts Editoren gibt es z.B. im WSAD 5.0 und als OpenSource Projekte.

Der Aufruf einer JSP mit Struts Tag-Libs setzt ein initialisiertes ActionServlet voraus (ohne dass dieses schon gerufen wurde), das ActionServlet sollte daher beim Start des Servers geladen werden (<load-on-startup> im web.xml).

Page 25: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 25 Hänchen & Partner GmbH 25

Referenzen

Struts Home http://jakarta.apache.org/struts/

Freies GUI Frontend für die Struts-Konfiguration http://www.jamesholmes.com/struts/console/

Struts Schulung/Workshop http://www.haenchen.softwarezentrum.de/ Schulung/schulung.html

IBM WebSphere Studio Application Developer (grafischer Struts Builder) http://www-3.ibm.com/ software/awdtools/studioappdev/

Page 26: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 26

Web-Anwendungen mit dem Jakarta Struts Framework

Noch Fragen?

Page 27: Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt

Hänchen & Partner GmbH 27

[email protected]

Calwer Strasse 1

D-71034 Böblingen

Tel.: +49-(0)7031-21 26 - 100

http://www.haenchen.softwarezentrum.de/