Der Ball ist rund, Teil 2: Betrachtung der Präsentationslogik beim Erstellen eines Tippspiels

Das nächste Spiel ist immer das schwerste

Thilo Frotscher

Dass das nächste Spiel immer das schwerste ist, gilt auch dann, wenn man gar nicht selbst mitspielt, sondern bloß tippen soll, wie’s ausgeht. Immerhin kann durch die Programmierung einer Tippspiel-Anwendung wenigstens der organisatorische Aufwand eines Tippspielverwalters in Grenzen gehalten werden. Und man kann – ganz nebenbei – auch eine Menge dabei lernen.

Nachdem im ersten Teil der Artikelreihe [1] Use Cases für die Tippspiel-Webanwendung erstellt, ein erster Entwurf für ein Entity Relationship-Diagramm abgeleitet und architektonische Grundentscheidungen getroffen wurden, soll in dieser Ausgabe die Präsentationslogik näher betrachtet werden. Dabei wird es ein Wiedersehen mit einigen Patterns wie dem Front Controller oder dem Business Delegate geben, die bereits im ersten Teil vorgestellt wurden.Natürlich kann man auf der grünen Wiese beginnen, wenn die Präsentationslogik für eine Webanwendung erstellt werden soll. Nach eingehendem Studium empfehlenswerter Patterns und Architekturen werden versierte Entwickler in den meisten Fällen zu guten Lösungen kommen. Es ist jedoch sehr zeitaufwändig und damit auch teuer, dieses Rad immer wieder neu zu erfinden. Aus diesem Grund empfiehlt es sich unbedingt, einen Blick auf die unterschiedlichen Frameworks zur Entwicklung solcher Webanwendungen zu werfen. Es gibt jedoch mittlerweile eine recht große Anzahl solcher Frameworks und es fällt nicht immer leicht, die Unterschiede, Vor- und Nachteile zu erkennen und gegeneinander abzuwägen. Zu den bekanntesten Frameworks zählen Struts, Tapestry, WebObjects und Maverick. In [2] kann ein ausführlicher Vergleich verschiedener Web-Frameworks nachgelesen werden.Grundsätzlich kann zwischen aktionsgesteuerten und ereignisgesteuerten Frameworks unterschieden werden. Die Grundidee aktionsgesteuerter Frameworks ist angelehnt an den typischen Request-Response-Mechanismus von HTTP. Eingehende Requests werden dabei auf Aktionen abgepictureet, die üblicherweise durch Java-Klassen repräsentiert werden. Dabei wird als Ausgangspunkt eines Request in der Regel das komplette View verstanden. Innerhalb einer Aktion werden die Parameter des Request verarbeitet, gegebenenfalls Funktionalitäten der Geschäftslogik (also des Modells im Sinne vom MVC) aufgerufen und schließlich an einen View weitergeleitet, welche die Ergebnisse des Request oder die Reaktion darauf darstellt. Dieses View kann mithilfe von JSP oder einer anderen Template-Technologie (wie z.B. Velocity) realisiert werden. Im Gegensatz dazu ähneln ereignisgesteuerte Frameworks der Art und Weise, wie gewöhnliche Benutzungsoberflächen in der objektorientierten Welt entwickelt werden. Hierbei werden bestimmte Ereignisse mit Code-Fragmenten verknüpft, die auszuführen sind, wenn das Ereignis eingetreten ist. Dies geschieht jedoch nicht auf View-Ebene, sondern auf Basis einzelner Bedienelemente. So ist es etwa möglich, das Klicken auf einen Button mit dem Aufruf einer bestimmten Methode zu verknüpfen.Von den zuvor genannten Frameworks zählen Struts und Maverick zu den aktionsgesteuerten, Tapestry und WebObjects sind dagegen ereignisgesteuert. Am weitesten verbreitet ist sicherlich Struts – es scheint zum De-facto-Standard für die Entwicklung von Java-Webanwendungen zu werden. Dies hat unter anderem zur Folge, dass umfangreiche Dokumentationen und Erfahrungsberichte zur Verfügung stehen und sich in aller Regel Entwickler finden lassen, die bereits die ein oder andere Erfahrung mit Struts vorweisen können. Auch für die Präsentationslogik des Tippspiel-Projektes fiel die Wahl auf Struts.Struts ist ein Open Source-Framework aus dem reichen Fundus des Apache Jakarta-Projektes. Die Installation gestaltet sich erfreulich einfach. Vorausgesetzt wird zunächst, dass ein Web-Container mit Unterstützung für das Servlet API 2.2 und JSP 1.1 sowie ein aktuelles Java Development Kit zur Verfügung stehen. Ist dies der Fall, beschränkt sich die Installation von Struts auf das Herunterladen und Entpacken der Binaries in ein beliebiges Verzeichnis. In der Distribution sind mehrere Webarchive (.war-Dateien) enthalten, von denen insbesondere struts-blank.war als Startpunkt für eigene Anwendungen dient. Dieses Archiv ist also einfach in den Web-Container zu kopieren, der es in der Regel automatisch auspackt. Dann kann mit der Entwicklung der eigenen Funktionalitäten begonnen werden. Zuvor sollte jedoch nach Möglichkeit der Name des Archivs und damit der gesamten Webanwendung entsprechend der zu entwickelnden Anwendung geändert werden, also zum Beispiel in tippspiel.war. Weiterhin empfiehlt es sich in den meisten Fällen, die eigentliche Entwicklung nicht im Web-Container, sondern in einer zweiten (Entwicklungs-)Umgebung vorzunehmen, sodass sich im Web-Container jederzeit eine aktuelle lauffähige Version befindet.Das Struts-Framework bringt letztlich nur ein einziges Servlet mit, das so genannte ActionServlet. Von ihm wird etwas weiter unten noch die Rede sein. In der Regel wird man also mit der Struts-Webanwendung beginnen und gegebenenfalls deren Deployment Descriptor (web.xml) weitere Servlets hinzufügen, wie etwa im Falle des Tippspiel-Projektes das Axis-Servlet zusätzlich aufzunehmen ist. Für die Zusammenführung von Axis und Struts sind zunächst alle von Axis benötigten Bibliotheken aus dessen Verzeichnis WEB-INF/lib in das gleichnamige Verzeichnis der Tippspiel-(Struts-)Webanwendung zu kopieren. In einem zweiten Schritt müssen die benötigten Servlet-Definitionen, URL Mappings, MIME Mappings etc. aus dem Deployment Descriptor von Axis in den des Tippspiels übernommen werden. Dabei ist darauf zu achten, dass für die einzelnen Elemente des Deployment Descriptor eine bestimmte Reihenfolge einzuhalten ist und deshalb nicht einfach der Inhalt des einen an das Ende des anderen kopiert werden kann. Gegebenenfalls sollten bei der Übernahme dieser Konfigurationen die URL Mappings für das Axis-Servlet an jene des Tippspiels angeglichen werden. Nun kann mit der Entwicklung der Präsentationslogik begonnen werden.

Abb. 2: Anzeige der bekannten Wettbewerbe
Geschrieben von
Thilo Frotscher
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.