Movatterモバイル変換


[0]ホーム

URL:


Zum Inhalt springen
WikipediaDie freie Enzyklopädie
Suche

Struts

aus Wikipedia, der freien Enzyklopädie
Dieser Artikel behandelt die Software. Zur Band sieheThe Struts.
Struts

Basisdaten

EntwicklerApache Software Foundation
Erscheinungsjahr10. Oktober 2006, 11. April 2014[1]
Aktuelle Version7.1.1[2]
(1. Oktober 2025)
Aktuelle Vorabversion6.7.0[3]
Betriebssystemplattformunabhängig
Programmier­spracheJava[4][1]
KategorieWebframework
LizenzApache-Lizenz
struts.apache.org

Struts ist einOpen-Source-Framework für die Präsentations- und Steuerungsschicht vonJava-Webanwendungen.Struts beschleunigt die Entwicklung von Webanwendungen wesentlich, indem esHTTP-Anfragen in einem standardisierten Prozess verarbeitet. Dabei bedient es sich standardisierter Techniken wieJakarta Servlet,JavaBeans, Resource Bundles undXML sowie verschiedenerApache-Commons-Pakete. Für den Entwickler bedeutet das, dass viele applikationsrelevante Funktionen bereits implementiert und einsatzbereit sind. Struts wird in sehr vielen Webanwendungen eingesetzt und gemeinhin als solidesFramework angesehen.

Geschichte

[Bearbeiten |Quelltext bearbeiten]

Struts wurde vonCraig McClanahan im Jahr 2000 entwickelt. Seitdem arbeitet eine ständig wachsende Entwicklergemeinde an der Verbesserung des Frameworks.

Als eines der bekanntestenJakarta-Projekte ist Struts im Jahr 2004 zu einem„Apache Toplevel Project“[5] avanciert.

Am 27. November 2005 verkündete derWebWork Entwickler Patrick Lightbody, dass das Struts ähnliche WebWork als Basis für Apache Struts 2 herangezogen wird.[6] Die folgende Release 2.2.x werde zwar noch unter dem Namen WebWork vertrieben, weiterführende Features und Major Releases werden aber ausschließlich unter Struts 2 laufen. WebWork war ein auf XWork basierendes JavaWebframework der Firma OpenSymphony.[7] Zusätzlich zu den von XWork gebotenen Features ermöglichte WebWork Unterstützung bei der Erzeugung von wiederverwendbarenUI templates. Dies umfasste unter anderem Internationalisierung, Formularkontrolle, dynamisches Formular-Parameter-Mapping zuJavaBeans, robuste client- und serverseitige Validierung und vieles mehr. WebWork war unter der OpenSymphony Software License verfügbar, welche einer modifizierten Form derApache Software License entspricht.

2009 wurde dann auch in einer gemeinsamen Erklärung bekanntgegeben, dass WebWork eine bessere Basis für die Weiterentwicklung von Struts darstelle und die Verschmelzung der beiden Frameworks von der technischen Überlegenheit von WebWork und der größeren Struts Community profitieren würde.[8]Ab der Version 2 ist das Struts-Framework mit demWebWork-Framework verschmolzen.

Der Ansatz von Struts wurde auch für die Entwicklung von Struts4PHP benutzt.

Neben der aktuellen und stetig weiterentwickelten Version von Struts 2 existiert seit 2022 einKlon von Struts 1, der das Legacy-Framework von Struts 1 auf einen aktuellenJakarta EE kompatiblen Stack aktualisiert.[9]

Aufbau

[Bearbeiten |Quelltext bearbeiten]

Dem Struts-Framework liegt dasEntwurfsmusterModel View Controller“ zugrunde. Die von Struts zur Verfügung gestellten Komponenten entstammen den Bereichen Präsentation (View) und Programmsteuerung (Controller). Funktionen aus dem Modell-Bereich müssen in einer Anwendung anderweitig implementiert werden. Das Framework beinhaltet zurzeit ungefähr 300 Java-Klassen, die in acht Kernpakete eingeteilt sind.

Theoretischer Ansatz

[Bearbeiten |Quelltext bearbeiten]

Model-1-Architektur mit JavaServlets/JSP

[Bearbeiten |Quelltext bearbeiten]

Nachdem die Technik vonJava-Servlets eingeführt wurde, erkannte man schnell, dass das Erstellen vonHTML-Seiten mit Servlets zeitaufwändig und die Weiterentwicklung von Views sehr mühsam sein kann. Hinzu kam, dass alle drei Komponenten desModel-View-Controller-Konzepts in einem Servlet realisiert wurden. Daraufhin wurdeJSP eingeführt, die vor allem demWebdesigner die Arbeit leichter machte und sich in kurzer Zeit durchsetzte. Daraus entwickelte sich dieModel-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. Zwar mildert die Verwendung vonTag-Bibliotheken (wie z. B.JSTL) dieses Problem etwas, weil kein Java-Code mehr benötigt wird. Das konzeptionelle Grundproblem der Vermischung von Präsentation mit fachlicher Funktionalität bleibt jedoch bestehen.

Model-2-Architektur mit Struts

[Bearbeiten |Quelltext bearbeiten]

Die aufgeführten Probleme haben dazu beigetragen, dass man ein neues Konzept entwickeln musste, das die einzelnen Komponenten klarer voneinander abgrenzt und Java-Servlets und JSP gleichermaßen einbindet. Es entstand dieModel-2-Architektur für Webanwendungen, die ihren Einsatz im Struts-Framework gefunden hat. Diese setzt einenFront Controller ein, wonach jeder Aufruf erst zentral verarbeitet und dann an die entsprechenden Controller weitergeleitet wird.

Struts2 Features

[Bearbeiten |Quelltext bearbeiten]
  • jQuery-Plugin
  • Dojo-Plugin (veraltet)
  • AJAX Client Side Validation
  • Unterstützung für Templates
  • Verschiedene Ergebnistypen
  • Einfach zu erweitern durch Plugins
  • REST-Plugin (REST basierende Actions, Extension-less URLs)
  • Convention Plugin (Action Konfiguration via Konventionen und Annotations)
  • Spring-Plugin (Dependency Injection)
  • Hibernate-Plugin
  • JFreechart-Plugin (Charts)
  • Rome-Plugin (RSS Feeds)

Praktische Umsetzung

[Bearbeiten |Quelltext bearbeiten]

Das Ziel ist die Trennung von Präsentation, Datenhaltung undAnwendungslogik. Dies erhöht die Übersicht und die Wartbarkeit. Die Kernelemente in Struts, die zu implementieren sind:

Action
für Programmsteuerung, Schnittstelle zwischen der Ansicht (View) und der Anwendungslogik
JSP
für Präsentation

Die Komponenten werden in der zentralenKonfigurationsdatei von Struts miteinander verknüpft.

Beispielstruts-config.xml in Struts1:

<struts-config><!-- FormBean Definitionen --><form-beanstype="org.apache.struts.action.ActionFormBean"><form-beanname="RegisterForm"type="bar.foo.web.RegisterForm"/></form-beans><!-- Action Definitionen --><action-mappingstype="org.apache.struts.action.ActionMapping"><actionpath="register"name="RegisterForm"type="bar.foo.web.RegisterAction"input="/web/register.jsp"scope="request"validate="true"><forwardname="success"path="/home.do"/><forwardname="failure"path="/error.do"/></action></action-mappings></struts-config>

Beispielstruts.xml in Struts2:

<struts><constantname="struts.enable.DynamicMethodInvocation"value="false"/><packagename="myApplication"extends="struts-default"><actionname="index"><result>/jsp/index.jsp</result></action></package></struts>

Die Präsentation

[Bearbeiten |Quelltext bearbeiten]

EinParadigma ist, in der JSP so wenig Java-Code (Scriptlets) wie möglich zu verwenden. Um dies zu ermöglichen, sollte man die von Struts mitgeliefertenTag-Libs einsetzen, die einem beim Auslesen der Form-Bean helfen.

Beispiel:

<html:text name="RegisterForm" property="emailAddress" size="20"/>

Hier wird das Attribut „emailAddress“ der Action (Struts2) bzw. Form-Bean (Struts1) über die Setter-Methode nach dem Senden des Formulars mit dem Inhalt des Textfeldes gefüllt. Weiterhin wird ein<input type="text" size="20" name="emailAddress" value="..."/> HTML-Element in der JSP generiert.

Tiles

[Bearbeiten |Quelltext bearbeiten]

Struts besitzt ebenfalls eine Vorlagen-Erweiterung,Tiles genannt. Sie ermöglichen dem Entwickler, seine Webseiten komponentenbasiert aufzubauen (Header, Footer, Content, und so weiter). Tiles können sowohl JSPs als auch weitere Tiles inkludieren.

Validator

[Bearbeiten |Quelltext bearbeiten]

Ab der Version 1.1 besitzt Struts ein Validierungswerkzeug, das dem Entwickler bei der Überprüfung der abgesendeten Formdaten hilft. Es arbeitet mit sogenanntenValidatoren, die eine spezifische Prüfaufgabe durchführen und beliebig wiederverwendet werden können. Struts bringt einige vorgefertigte Validatoren mit (z. B. für die Prüfung, ob ein Feld ausgefüllt ist oder eine gültige Zahl enthält). Stellt einValidator einen Fehler fest, wird automatisch auf die Ausgangsseite zurückgeleitet und der Fehler angezeigt. Es ist aber auch möglich, den Fehler viaJavaScript clientseitig prüfen zu lassen und den Fehler noch vor dem Absenden des Formulars in einem Fenster anzuzeigen.

Die Form-Bean (Struts1)

[Bearbeiten |Quelltext bearbeiten]

Die Form-Bean ist eine normaleJavaBean, die alle benötigten Daten für die JSP und die Action enthält. Sie ist die Schnittstelle zwischen diesen beiden Komponenten und wird über diestruts-config mit einem Formular in der JSP verknüpft. Wenn das Formular abgeschickt wird, wird die Bean durch dasActionServlet (noch bevor die Action ausgeführt wird) über diesetter-Methoden mit den entsprechenden Eingabewerten gefüttert.

DieFormBean enthält außerdem eine Validierungsmethode, welche, wenn in der Konfiguration aktiviert, die Daten der Form-Bean überprüft, bevor sie zur Action geschickt werden. Außerdem enthält sie einereset-Methode um den Inhalt zurückzusetzen, damit sie wiederverwendet werden kann, was den Aufwand für die Speicherverwaltung reduziert (siehe:Slab allocator).

Da diese Art der Datenhaltung oft zustarr ist, wurde von den Struts-Entwicklern die Möglichkeit geschaffen, die Beans in derstruts-config.xml zu deklarieren, wodurch die starre und aufwändige Programmierung der Beans entfällt. Zum Zugriff wird dann dieActionForm zu einerDynaBean desApache Commons BeanUtils Projektgecastet und die Daten werden dann über Schlüssel abgefragt. Bei der Verwendung dynamischer Beans kann außerdem zur Validierung dasCommons Validation Framework eingesetzt werden.

Die Action

[Bearbeiten |Quelltext bearbeiten]

Die Action ist diejenige Komponente, die mit demBackend kommuniziert, von ihr Daten holt und sie auch wieder dahin schreibt. Sie enthält meist weitere Prüf- und Auswertungsmechanismen.

Die Action ist ebenfalls für die Navigation durch die Webseite verantwortlich, da sie nach getaner Arbeit einActionForward zurückgeben muss. Je nachdem, welchen Forward die Action zurückgibt, entscheidet das Struts-Framework anhand derstruts-config, zu welcher Seite weitergeleitet werden soll.

Siehe auch

[Bearbeiten |Quelltext bearbeiten]

Literatur

[Bearbeiten |Quelltext bearbeiten]
  • Matthias Weßendorf:Struts – Websites mit Struts 1.2 & 1.3 und Ajax effizient entwickeln. 2. Auflage. W3L, Herdecke 2006,ISBN 3-937137-26-2
  • Michael Albrecht, Manfred Wolff:Struts ge-packt. MITP, Bonn 2004,ISBN 3-8266-1431-3

Weblinks

[Bearbeiten |Quelltext bearbeiten]

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. abprojects.apache.org. (abgerufen am 8. April 2020).
  2. Release 7.1.1. 1. Oktober 2025 (abgerufen am 11. November 2025).
  3. Releases STRUTS_6_7_0. 24. November 2024 (abgerufen am 18. Dezember 2024).
  4. The struts Open Source Project on Open Hub: Languages Page. In:Open Hub. (abgerufen am 18. Oktober 2018).
  5. Jakarta News 18. März 2004
  6. WebWork joining Struts (Memento vom 21. Februar 2009 imInternet Archive)
  7. opensymphony.com/webwork (Memento vom 12. Juni 2011 imInternet Archive)
  8. PROPOSAL: Merger with WebWork von Don Brown, Ted Husted, Jason Carreira und Patrick Lightbody, 25. November 2009
  9. Stefan Graff: Struts1 - Reloaded. Github. 2024, abgerufen am 13. Februar 2024. 
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Struts&oldid=256679199
Kategorien:

[8]ページ先頭

©2009-2025 Movatter.jp