Struts ist ein Open Source-Framework für die Präsentationsschicht von Java-Web-Anwendungen. Es ist eines der bekanntesten Jakarta-Projekte und beschleunigt die Entwicklung von Web- Applikationen wesentlich, indem es einen standardisierten Prozess zur Verarbeitung von HTTP-Anfragen vornimmt. Dabei bedient es sich standardisierter Technologien wie JavaServlets, Java Beans, Ressource Boundles und XML sowie verschiedener Jakarta Commons Pakete.
Für den Entwickler bedeuted das, dass viele applikationsrelevante Funktionen bereits implementiert und einsatzbereit sind. Struts wurde von versierten Entwicklern geschaffen und wird bereits in hunderten Applikation eingesetzt. Das garantiert ein solides Framework mit den besten exisiterenden Softwareentwicklungsstrategien. Struts wurde von Craig McClanahan[1] im Jahr 2000 entwickelt. Seitdem arbeitet eine ständig wachsende Entwicklergemeinde an der Verbesserung des Frameworks. Aktuelle Version ist 1.2.
Aufbau
Das Struts-Framework basiert auf dem Paradigma des Model-View-Controllers. Dabei sind die Komponenten von Struts in der View und dem Controller anzusiedeln. Typsiche Model- Funktionalitäten bietet das Framework nicht. Das Framework beinhaltet zur Zeit ca. 300 Java- Klassen, die in 8 Kernpakete eingeteilt sind.
Theoretischer Ansatz
Model-1-Architektur mit JavaServlets/JSP
Nachdem die Technologie von JavaServlets eingeführt wurde, erkannte man schnell, dass das Erstellen von HTML-Seiten mit Servlets zeitaufwendig und die Weiterentwicklung von Views sehr mühsam sein kann. Hinzu kam, dass alle drei Komponenten des MVC in einem Servlet realisiert wurden. Daraufhin wurde die JSP-Technologie eingeführt, die vor allem dem Webdesigner die Arbeit leichter machte und sich in kurzer Zeit durchsetzte. Daraus entwickelte sich die Model-1-Architektur, die beschreibt, dass Datenhaltung, Geschäftslogik und View in einer JSP anzusiedeln sind, was jedoch bei komplexer Anwendungslogik zu neuen Problemen führt: Die JSP wird in kürzester Zeit unüberschaubar und lässt sich nur durch Entwickler warten, die sowohl HTML- als auch Java-Kenntnisse besitzen.
Model-2-Architektur mit Struts
Die aufgeführten Problematiken haben dazu beigetragen, dass man ein neues Konzept entwickeln musste, dass die einzelnen Komponenten klarer voneinander abgrenzt und JavaServlets und JSP gleichermaßen einbindet. Es entstand die Model-2-Architektur für Webanwendungen, die ihren Einsatz im Struts-Framework gefunden hat. Eine wichtige Rolle spielt hierbei das ActionFirst Pattern. Das bedeutet, dass View-Komponenten, die durch JSP abgebildet werden, ausschließlich über Struts-Actions (Servlets) referenziert werden, niemals über einen HTTP-Request. Dabei wird jeder HTTP-Request von einer Controller- Komponente (Servlet) entgegengenommen, bei Struts dem so genannten ActionServlet. Nach einem vom Benutzer initiierten HTTP-Request wird eine Struts-Action ausgeführt, die eine Verbindung zur Geschäftslogik herstellt und diese aktualisiert. Die Ergebnisse der Ausführung werden anschließend in dem HttpRequest als Attribute abgelegt. Danach wird über einen Action- Forward die View aufgerufen und mit den im HttpRequest abgelegten Daten gefüllt. Befindet sich in einer View-Komponente ein HTML-Formular, so wird dieses über ein Java-Bean mit Werten aus dem Model gefüllt. Die Model-2-Architektur bietet sich hier als Regelwerk an (u.a. ist die Kommunikation von Views untereinander, wie auch die feste Kodierung von Flusssteuerung in JSP verboten).
Lizenz
Struts ist unter der Apache-Lizenz veröffentlicht.