ARS Computer und Consulting GmbH Spacer Grafik ARS Systemhaus    Grafik Application Development    Grafik IT Infrastruktur    Grafik Lizenzen    Grafik Training   
ARS Systemhaus
Profil
Lage und Anreise
Stellen
Presse
Rezension: Enterprise Java mit IBM WebSphere
Ihre System i spielt ganz vorne mit!
Formal fundierte Modellierung von Geschäftsprozessen
Computer Reseller News 42/2005: Unkomplizierte Projekte mit SOA
JavaMagazin 5/2005: Das RAD neu erfunden?
JavaMagazin 6/2005: Der sechste Sinn
Notes Magazin 07/2004: ARS erweitert Schulungsangebot um Rational
JavaMagazin 2/2004: Web[en] mit Struts
JavaMagazin 4/2003: WebSphere Application Server V5
JavaMagazin 3/2003: WebSphere Studio Application Developer V5
ms-Monatsspiegel 7-8/2002: Der direkte Draht zum Hersteller
eNews-Magazin 06/2002: Web Services
JavaMagazin 12/2001: VisualAge for Java 4.0 und sein Nachfolgeprodukt
JavaMagazin 11/2001: Der IBM WebSphere Application Server 4.0 im Überblick
AGBs und Impressum
Impressum
SiteMap
Suche
 
Kontakt

JavaMagazin 2/2004: Web[en] mit Struts

Struts-Unterstützung im WebSphere Studio Application Developer

Dina Winkler


Struts ist ein Open Source Framework, das im Rahmen des Jakarta-Projekts von Apache Software Foundation entwickelt wurde und zur Zeit in der Version 1.1 verfügbar ist. Das Framework bietet eine Grundlage für die Entwicklung von Web-Anwendungen gemäß der Model2-Architektur. Die Verbreitung des Struts-Frameworks ist nicht nur durch die konsequente Umsetzung des Model View Controller Design Patterns zu erklären; das Framework bietet vor allem Standardfunktionen und Lösungen für Vorgänge und Probleme bei der Entwicklung von Web-Anwendungen an, wie Validierung der Benutzereingaben oder Internationalisierung.

Mit der Version 5.0 der WebSphere-Studio-Produktfamilie hat Struts auch Einzug in die eclipse-basierten Entwicklungswerkzeuge von IBM gehalten, welche eine Unterstützung für die Struts-Versionen 1.0.2 sowie 1.1 beta anbieten. In der vor kurzem erschienenen Version 5.1 der Produktfamilie wird nun sowohl die bewährte Struts-Version 1.0.2 als auch die inzwischen stabile Version 1.1 unterstützt.
Im WebSphere Studio Application Developer (ebenso wie in allen anderen WebSphere-Studio-Produkten) beginnt die Unterstützung des Struts-Frameworks mit der Konfiguration von Web-Projekten. Darüber hinaus stehen dem Entwickler einige Assistenten sowie der an das Struts-Framework angepasste Page Designer zur Verfügung. Nicht zu vergessen ist der Web Diagram Editor, der jedes Entwicklerherz etwas höher schlagen lässt. Auch der Konfiguration von Struts-Komponenten wurde mit einem speziellen Editor Rechnung getragen.

Konfiguration von Web-Projekten

Aktiviert man beim Erstellen eines neuen Web-Projekts im Assistenten des WSADs die Struts-Unterstützung, so erhält man die Möglichkeit, die ersten Konfigurationseinstellungen für Struts vorzunehmen. Mit der Struts-Version wird festgelegt, welche Bibliotheken dem Projekt hinzugefügt werden sollen und welche DTD bei der Validierung der Konfigurationsdatei verwendet wird. Außerdem kann hier eine der zentralen Komponenten der Internationalisierung – das Resource Bundle – für die neue Anwendung definiert werden.
Das erstellte Web-Projekt ist fertig konfiguriert: Die Tag Libraries sowie die erstellte Konfigurationsdatei struts-config.xml sind registriert, das Action Servlet im Deployment Descriptor web.xml eingetragen – die Entwicklung kann beginnen.
Aber auch die bereits existierenden Web-Projekte haben eine Struts-Chance. Über die Projekteigenschaften kann die Struts-Unterstützung nachträglich aktiviert werden, sodass auch hier die vorher beschriebenen Einstellungen vorgenommen werden können. Hat man sich allerdings bei einem Web-Projekt für eine Struts-Version entschieden, ist der Umstieg auf eine andere Struts-Version nur manuell möglich.

Designen mit dem Web Diagram Editor

Mit dem Web Diagram Editor fällt der erste Schritt in der Entwicklung einer Web-Anwendung – das Designen der Applikation – nicht nur leicht, sondern macht auch richtig Spaß. Die Komponenten, aus denen die Anwendung künftig bestehen wird, seien es JSPs oder HTML-Seiten, Action Forms oder Actions, werden Schritt für Schritt dem Diagramm hinzugefügt.
Abhängigkeiten zwischen den einzelnen Komponenten werden durch Connections abgebildet, die im Diagramm z.B. von einer JSP zur entsprechenden Action-Klasse gezogen werden. Damit werden nicht nur Verbindungen zwischen den unterschiedlichen Komponenten eines Projekts sondern auch der Datenfluss dargestellt.


Abb. 1: Komponenten einer Struts-Anwendung im Web Diagram Editor

Auch die bereits vorhandenen Struts-Elemente eines Projekts können im Web Diagram Editor einfach platziert werden, indem sie selektiert und mit der Maus auf das Diagramm gezogen werden. Bei implementierten Komponenten werden außerdem die Verbindungen zu den anderen Diagrammelementen vom Werkzeug erkannt und auf Wunsch im Diagramm eingezeichnet.
Seinen Charme verdankt der Web Diagram Editor unter anderem den Icons, welche die einzelnen Struts-Komponenten wie Action Form oder Action-Klasse darstellen. Noch nicht implementierte Klassen bzw. Seiten werden im Diagramm ausgegraut und sind daher leicht zu erkennen. Auch Fehler in der Konfiguration und Warnungen werden durch ein entsprechendes Symbol signalisiert.
Die Unterstützung von Tiles, einer Struts-Erweiterung zur Gestaltung von Layouts, durch den Web Diagram Editor enttäuscht dagegen, da logische Tiles-Komponenten nicht dargestellt werden. Außerdem kann das proprietäre Format der Diagramme nicht zu Dokumentationszwecken o. Ä. in ein anderes Format exportiert werden.
Richtig zu schätzen weiß man den Web Diagram Editor erst, wenn die designten Elemente der Web-Anwendung implementiert werden müssen. Per Doppelklick auf eine Komponente wird der jeweils passende Assistent gestartet, mit dessen Hilfe sich die Action Forms, Action-Klassen, JSPs, JavaBeans bzw. Struts-Module automatisch erstellen lassen und der auch einige Konfigurationsschritte übernimmt.
Ein Doppelklick auf eine bereits implementierte Komponente öffnet die Ressource im entsprechenden Editor. Bei den Action Forms und Action-Klassen wird die Konfigurationsdatei struts-config.xml geöffnet und die Konfiguration der Komponente selektiert. Um eine Komponente zu editieren, lässt sich die entsprechende Datei über das Kontextmenü im Editor öffnen.
Auch wenn man den Web Diagram Editor nicht einsetzt, die Assistenten zum Erstellen von Struts-Komponenten gehören zur Standardausstattung der Web Perspective und stehen dem Entwickler jederzeit zur Verfügung. Hier stellt sich jedoch das Henne-Ei-Problem: Was kommt zuerst, Action Form oder JSP?

Erstellen von Action Forms

Beginnt man die Implementierung der Anwendung mit Action Forms, so kann man die definierten Properties später zur Gestaltung der Eingabefelder einer JSP verwenden. Wird dagegen zunächst die JSP implementiert, so kann diese anschließend zur Definition einer Action Form benutzt werden. Welchen Weg man geht, bleibt wohl Geschmackssache.
Der Assistent zur Erstellung von Action Forms leistet das, was man von ihm erwartet. Er bietet die Möglichkeit, der neuen Klasse die Methoden reset() und validate() hinzuzufügen und die notwendigen Properties zu definieren. Der generierte Quelltext der Methoden reset() und validate() bildet auch eine gute Basis, auf der man in der weiteren Entwicklung aufsetzen kann. Falls man mit Struts nicht sehr vertraut ist, findet man in der validate()-Methode ein Beispiel für die Validierung der Benutzereingaben.



Abb. 2: Assistent zur Erstellung von Action Forms

Hat man eine JSP parat, welche die Eingabefelder definiert, dann können diese als Properties bequem in die Klasse übernommen werden. Der nüchterne Assistent verrät einem erst mit dem erzeugten Quelltext, dass man sich um die Getter- und Setter-Methoden der Properties nicht mehr kümmern muss, da diese vom Assistenten automatisch erzeugt werden.
Bevor die Klasse vom Assistenten erstellt wird, kann der Entwickler außerdem noch für die Konfiguration der Klasse in der Datei struts-config.xml sorgen, indem er die entsprechenden Konfigurationseinträge auf der letzten Seite des Assistenten spezifiziert.
Im Gegensatz zum Erstellen einer Action Form ist das Entfernen einer Action-Form-Klasse aus dem Projekt nicht unproblematisch. Zwar wird die Verwendung der Klasse in anderen Komponenten registriert, doch die Einträge in der Konfigurationsdatei bleiben von der Änderung unberührt. Für den Entwickler bedeutet das, dass er eventuell vorhandene Fehler in der Konfigurationsdatei manuell beseitigen muss.
Erstellen von JSPs
Um JSPs in einer Struts-Anwendung zu erstellen wird ein Assistent verwendet, der bereits vom WSAD bekannt ist und der für Struts um zusätzliche Dialoge erweitert wurde. So kann man z.B. bereits im Assistenten die Tag Libraries auswählen, die später auf der Seite verwendet werden sollen. Hilfreicher ist allerdings die Auswahl der Action Form, welche die Benutzereingaben aus dem Formular empfangen wird, sowie der Action-Klasse, die für die Bearbeitung der Anfrage zuständig ist.
Verwendet man an dieser Stelle bereits implementierte und in der Konfigurationsdatei registrierte Klassen, profitiert man mehrfach davon. Zum einen werden diese in der Auswahlliste präsentiert, was die Fehleranfälligkeit der Eingaben reduziert. Die Properties der ausgewählten Action Form können außerdem dazu verwendet werden, um die Eingabefelder eines Formulars zu definieren.



Abb. 3: Definition der Eingabefelder aus den Properties der Action Form

Bevor die Properties der Action-Form-Klasse als Eingabefelder in einer JSP verewigt werden, bietet der Assistent dem Entwickler die Möglichkeit, die Gestaltung der Eingabefelder zu beeinflussen.
Zum Editieren einer JSP mit Struts Tags kann wie für jede andere JSP der Page Designer des WSADs verwendet werden. In der Design-Ansicht werden die Struts Tags automatisch erkannt und entsprechend dargestellt. In der Source-Ansicht freut man sich über den verfügbaren Content Assist. Eine besondere Aufmerksamkeit wird im WSAD den Struts Tags <html:errors>, <html:messages> und <html:options> geschenkt: Für diese Tags kann die visuelle Darstellung im Page Designer konfiguriert werden.

Und Action!

Zu einer Action-Klasse kommt man im WSAD auf zwei Wegen. Der erste Weg führt über den Action-Mapping-Assistenten, der hauptsächlich dazu verwendet wird, die implementierten Komponenten wie Action Form und Action-Klasse miteinander zu verknüpfen und diese einem Aufrufpfad zuzuordnen. Fehlt zur vollständigen Verknüpfung allerdings die Action-Klasse, so kann man diese im nächsten Schritt spezifizieren und vom Assistenten erstellen lassen.
Der zweite Assistent, der zum Erzeugen einer Action-Klasse verwenden werden kann, bietet im Unterschied zum Action-Mapping-Assistenten als erstes die Konfiguration der zu erstellenden Action-Klasse an. Optional kann auch hier der Eintrag in der Konfigurationsdatei definiert werden.
Zur Konfiguration der neuen Action-Klasse wird in beiden Assistenten der gleiche Dialog verwendet. Außer den üblichen Einstellungen wie Angabe der Superklasse und die zu implementierenden Interfaces kann hier das Erzeugen der perform()- bzw. execute()-Methode eingestellt werden. In Abhängigkeit davon, welche Struts-Version im Projekt unterstützt wird, wird eine der beiden Methoden im Assistenten angeboten und in der Action-Klasse erstellt.
An welche Ressource die Anfrage nach dem Aufruf der Action-Klasse weitergeleitet werden soll, kann nicht nur in beiden Assistenten definiert werden; man findet die Einstellungen vor allem in dem vom Assistenten erstellten Quelltext wieder. Dort wird ein ActionForward-Objekt erstellt und mit der entsprechenden Ressource belegt. Da auch die Fehlerbehandlung wie das Erzeugen eines ActionErrors-Objekts sowie das Abspeichern der Fehler am Ende der Methode standardmäßig in der execute()/perform()-Methode implementiert wird, spart man sich auch hier ein Stück Arbeit.

Konfiguration der Komponenten

Obwohl jeder der Assistenten eine Möglichkeit zur Konfiguration der Struts-Komponenten bietet, kann man auf den Konfigurationseditor für die Datei struts-config.xml nicht gänzlich verzichten. Dieser enthält in Form von Registerkarten z.B. Dialoge zur Konfiguration von Action Forms, Action-Klassen, Datenquellen usw., sowie die Source-Ansicht, in der man die Konfigurationsdatei manuell editieren kann. Die grafische Oberfläche des Konfigurationseditors erfüllt ihre Aufgabe und führt den Benutzer zuverlässig durch die einzelnen Konfigurationsschritte. Auch die Wahrscheinlichkeit von fehlerhaften oder unvollständigen Eingaben wird durch den Editor eingeschränkt, beispielsweise durch Auswahllisten mit erlaubten Einträgen sowie die Validierung der konfigurierten Einträge.
Im Vergleich zur Vorversion wurde im Konfigurationseditor des WSADs 5.1 nicht nur an die grundlegenden Struts-Komponenten gedacht. Falls man mit einem neuen Request Processor die Logik des Action Servlets erweitern oder eine benutzerdefinierte Factory zum Einlesen der Resource Bundles definieren möchte, können die entsprechenden Konfigurationsschritte ebenfalls im Konfigurationseditor durchgeführt werden.
Wer auf die grafische Darstellung komplett verzichten möchte, kann die Datei jederzeit im XML-Editor oder mit einem vom Benutzer konfigurierten Werkzeug bearbeiten. Wie auch in der Source-Ansicht greift der WSAD im XML-Editor mit Content Assist und Fly-over-Help dem Entwickler unter die Arme.

Struts Explorer und Data Mappings View

Für den Durchblick im Projekt sorgt der Struts Explorer, der alle Komponenten einer Anwendung nach Komponentenart (z.B. Actions, Form Beans) gruppiert darstellt und dadurch bei nicht allzu umfangreichen Projekten die Suche nach einer bestimmten Komponente erheblich vereinfacht. Ferner zeigt der Data Mappings View die Abbildung der Eingabefelder eines Formulars auf die Attribute der entsprechenden Action-Form-Klasse. Auf diese Weise lässt sich der Datenfluss zwischen den Struts-Komponenten besser nachvollziehen, was den einen oder anderen Blick in den Quelltext erspart.



Abb. 4: Struts Explorer und Data Mappings View

Fazit

Wer sich für den Einsatz von Struts in seiner Web-Anwendung entscheidet, wird die Erweiterungen für das Struts-Framework in den WebSphere-Studio-Produkten zu schätzen wissen. Besonders die Verwendung des Web Diagram Editors ermöglicht eine schnelle und unkomplizierte Entwicklung. Bleibt man allerdings nicht nur bei den Basis-Komponenten des Struts-Frameworks, muss man sich auf den einen oder anderen manuellen Eingriff einstellen.

Über die Autorin

Dina Winkler ist Consultant und Trainerin bei der ARS Computer und Consulting GmbH (www.ars.de) in München und ist im Unternehmensbereich Application Development und Java-Technologien tätig.