Apache Struts
Struts
Entwickler: Apache Software Foundation
Aktuelle Version: 2.1.6
(13. Januar 2009)
Betriebssystem: Cross-platform
Kategorie: Webframework
Lizenz: Apache Software License
struts.apache.org

Struts ist ein Open-Source-Framework für die Präsentations- und Steuerungsschicht von Java-Webanwendungen. Als eines der bekanntesten Jakarta-Projekte ist es im Jahr 2004 zu einem „Apache Toplevel Project“[1] avanciert. Struts beschleunigt die Entwicklung von Webanwendungen wesentlich, indem es HTTP-Anfragen in einem standardisierten Prozess verarbeitet. Dabei bedient es sich standardisierter Technologien wie JavaServlets, Java Beans, Resource Bundles und XML sowie verschiedener Apache-Commons-Pakete.

Für den Entwickler bedeutet das, dass viele applikationsrelevante Funktionen bereits implementiert und einsatzbereit sind. Struts wird bereits in sehr vielen Webanwendungen eingesetzt und gemeinhin als solides Framework angesehen. Struts wurde von Craig McClanahan im Jahr 2000 entwickelt. Seitdem arbeitet eine ständig wachsende Entwicklergemeinde an der Verbesserung des Frameworks. Die aktuelle Version ist 2.1. Ab der Version 2 ist das Struts-Framework mit dem WebWork-Framework verschmolzen. Die Komponente Shale schlägt die Brücke hin zu Java Server Faces.

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

Inhaltsverzeichnis

Aufbau

Dem Struts-Framework liegt das EntwurfsmusterModel 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

Model-1-Architektur mit JavaServlets/JSP

Nachdem die Technologie von Java-Servlets eingeführt wurde, erkannte man schnell, dass das Erstellen von HTML-Seiten mit Servlets zeitaufwändig 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 JSP 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. Zwar mildert die Verwendung von Tag-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

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 die Model-2-Architektur für Webanwendungen, die ihren Einsatz im Struts-Framework gefunden hat. Diese setzt einen Front Controller ein, wonach jeder Aufruf erst zentral verarbeitet und dann an die entsprechenden Controller weitergeleitet wird.

Praktische Umsetzung

Das Ziel ist die Trennung von Präsentation, Datenhaltung und Anwendungslogik. Dies erhöht die Übersicht und die Wartbarkeit. Deshalb definiert man in Struts drei Hauptkomponenten:

  • JSP: Präsentation. Wird zur Laufzeit in ein Servlet (Java-Code) umgewandelt und übersetzt.
  • Action: Programmsteuerung (Controller). Schnittstelle zwischen der Ansicht (View) und der Anwendungslogik (Holen und Aktualisieren der Daten).
  • FormBean: Datenhaltung und Validierung (Inhalte von HTML-Formularfeldern, Kollektionen für Listen usw. in Java Beans).

Alle drei Komponenten werden in der zentralen Konfigurationsdatei von Struts miteinander verknüpft.

Beispiel struts-config.xml in Struts1:

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

Beispiel struts.xml in Struts2:

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

Die Präsentation

Ein Paradigma ist, in der JSP so wenig Java-Kode (Scriptlets) wie möglich zu verwenden. Um dies zu ermöglichen, sollte man die von Struts mitgelieferten Tag-Libs einsetzen, die einem beim Auslesen der Form-Bean helfen. Geschrieben und gelesen wird hier jeweils nur aus der im Request liegenden Form-Bean.

Beispiel:

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

Hier wird das Attribut „emailAddress“ der Form-Bean „RegisterForm“ über seine 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

Struts besitzt ebenfalls eine Vorlagen-Erweiterung, Tiles genannt. Sie ermöglichen dem Entwickler, seine Webseiten komponentenbasiert aufzubauen (Header, Footer, Content, usw.). Tiles geht dabei weit über das statische Inkludieren von JSP-Inhalten hinaus. So können Tiles weitere Tiles inkludieren, wohingegen einfache JSP-Inkludierungen nur JSP-Seiten einbeziehen können.

Validator

Seit der Version 1.1 besitzt Struts ein Validierungswerkzeug, das dem Entwickler bei der Überprüfung der abgesendeten Formdaten hilft. Es arbeitet mit so genannten Validatoren, 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 ein Validator einen Fehler fest, wird automatisch auf die Ausgangsseite zurückgeleitet und der Fehler angezeigt. Es ist aber auch möglich, den Fehler via JavaScript clientseitig prüfen zu lassen und den Fehler noch vor dem Absenden des Formulars in einem Fenster anzuzeigen.

Die Datenhaltung

Die Form-Bean ist eine normale Java Bean, 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 die struts-config mit einem Formular in der JSP verknüpft. Wenn das Formular abgeschickt wird, wird die Bean durch das ActionServlet (noch bevor die Action ausgeführt wird) über die setter-Methoden mit den entsprechenden Eingabewerten gefüttert.

Die FormBean 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 eine reset-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 zu starr ist, wurde von den Struts-Entwicklern die Möglichkeit geschaffen, die Beans in der struts-config.xml zu deklarieren, wodurch die starre und aufwändige Programmierung der Beans entfällt. Zum Zugriff wird dann die ActionForm zu einer DynaBean des Apache Commons BeanUtils Projekt gecastet und die Daten werden dann über Schlüssel abgefragt. Bei der Verwendung dynamischer Beans kann außerdem zur Validierung das Commons Validation Framework eingesetzt werden.

Die Action

Die Action ist diejenige Komponente, die mit dem Backend kommuniziert, von ihr Daten holt und sie auch wieder dahin schreibt. Sie enthält meist weitere Prüf- und Auswertungsmechanismen. Sie speichert die Daten in der Form-Bean ab und liest sie, nachdem die Seite abgeschickt wurde, wieder aus. Daher gilt es als Unsitte, die Daten hier direkt in den Request zu speichern; dazu ist schließlich die Form-Bean da.

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

Siehe auch

Literatur

  • 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

Quellen

  1. Jakarta News 18.3.2004
  2. Struts4PHP Wiki

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Apache Struts — Тип Платформа программирования Разработчик Apache Software Foundation Операционная система Кроссплатформенное программное обеспечение Последняя версия 2.3.4.1 (13 а …   Википедия

  • Apache Struts — est un framework libre servant au développement d applications web J2EE. Il utilise et étend l API Servlet Java afin d encourager les développeurs à adopter l architecture Modèle Vue Contrôleur. Apache Struts a été créé par Craig McClanahan et… …   Wikipédia en Français

  • Apache Struts — Desarrollador Apache Software Foundation [1] …   Wikipedia Español

  • Apache Struts — Infobox Software name = Apache Struts developer = Apache Software Foundation latest release version = 1.3.8 latest release date = release date|2007|03|10 latest preview version = 1.3.9 latest preview date = release date|2007|08|01 operating… …   Wikipedia

  • Struts — Entwickler Apache Software Foundation Aktuelle Version 2.2.3.1 [1] (7. September 2011) Betriebssystem Cross platform Programmier­sprache …   Deutsch Wikipedia

  • Struts — Apache Struts Apache Struts est un framework libre servant au développement d applications web J2EE. Il utilise et étend l API Servlet Java afin d encourager les développeurs à adopter l architecture Modèle Vue Contrôleur. Apache Struts a été… …   Wikipédia en Français

  • Struts framework — Apache Struts Apache Struts est un framework libre servant au développement d applications web J2EE. Il utilise et étend l API Servlet Java afin d encourager les développeurs à adopter l architecture Modèle Vue Contrôleur. Apache Struts a été… …   Wikipédia en Français

  • Struts — Apache Struts Тип Платформа программирования Разработчик Apache Software Foundation ОС Кроссплатформенное программное обеспечение Версия 2.1.6 13 января 2009 Лицензия Apache 2.0 license …   Википедия

  • Apache Click — Developer(s) Apache Software Foundation Stable release 2.3.0 / March 27, 2011; 7 months ago (2011 03 27) …   Wikipedia

  • Apache Harmony — Тип Java Virtual Machine Разработчик Apache Software Foundation Написана на C++ и Java Операционная система Windows и Linux Последняя версия 6.0 M3 (2 сентября …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”