
Das Apache-Struts-Web-Framework ist eine kostenlose Open-Source-Lösung zur Erstellung von Java-Webanwendungen.
Webanwendungen unterscheiden sich von herkömmlichen Websites dadurch, dass Webanwendungen eine dynamische Antwort erzeugen können. Viele Websites liefern nur statische Seiten. Eine Webanwendung kann mit Datenbanken und Geschäftslogik-Engines interagieren, um eine Antwort anzupassen.
Webanwendungen, die auf JavaServer Pages basieren, vermischen manchmal Datenbankcode, Seitendesign-Code und Kontrollfluss-Code. In der Praxis stellen wir fest, dass größere Anwendungen ohne Trennung dieser Belange schwer zu warten sind.
Eine Möglichkeit, Belange in einer Softwareanwendung zu trennen, ist die Verwendung einer Model-View-Controller-Architektur (MVC). Das Model repräsentiert den Geschäfts- oder Datenbankcode, die View repräsentiert den Seitendesign-Code und der Controller repräsentiert den Navigationscode. Das Struts-Framework wurde entwickelt, um Entwicklern dabei zu helfen, Webanwendungen zu erstellen, die eine MVC-Architektur nutzen.
Das Framework bietet drei Schlüsselkomponenten:
Einen vom Anwendungsentwickler bereitgestellten „Request“-Handler, der einer Standard-URI zugeordnet ist. Einen „Response“-Handler, der die Steuerung an eine andere Ressource übergibt, die die Antwort vervollständigt. Eine Tag-Bibliothek, die Entwicklern hilft, interaktive formularbasierte Anwendungen mit Server-Seiten zu erstellen. Die Architektur und die Tags des Frameworks entsprechen den gängigen Schlagwörtern. Struts funktioniert gut mit herkömmlichen REST-Anwendungen und mit Technologien wie SOAP und AJAX.
Das Apache-Struts-Projekt ist die Open-Source-Community, die das Apache-Struts-Framework erstellt und pflegt. Das Projekt besteht aus einer vielfältigen Gruppe von Freiwilligen, die gemeinsame Werte in Bezug auf kollaborative, gemeinschaftsbasierte Open-Source-Entwicklung teilen. Das Apache-Struts-Projekt ist stolz darauf, diese Werte mit unserer Mutterorganisation zu teilen: der Apache Software Foundation.
Das Projekt heißt „Struts“, weil das Framework die „unsichtbaren Grundpfeiler“ liefern soll, die professionelle Anwendungsentwicklung unterstützen. Struts bietet den Klebstoff, der die verschiedenen Elemente der Standard-Java-Plattform zu einem kohärenten Ganzen verbindet. Unser Ziel ist es, bestehende Standards zu nutzen, indem wir die fehlenden Teile produzieren, die wir benötigen, um unternehmensreife Anwendungen zu erstellen, die über die Zeit hinweg leicht zu warten sind.
Das Apache-Struts-Projekt bot zwei Hauptversionen des Struts-Frameworks an. Derzeit pflegen wir nur die Version Struts 2. Es wird empfohlen, alle Struts-1.x-Anwendungen auf Struts 2 zu aktualisieren. Bitte beginnen Sie keine neue Anwendungsentwicklung mit Struts 1.x, da wir keine Sicherheitspatches mehr herausgeben.
Struts 2 war ursprünglich als WebWork 2 bekannt. Nach mehreren Jahren unabhängiger Arbeit schlossen sich die WebWork- und Struts-Communities zusammen, um Struts 2 zu erstellen. Das 2.x-Framework ist die beste Wahl für Teams, die elegante Lösungen für schwierige Probleme schätzen.
Apache Struts ist ein modernes, gepflegtes und voll ausgestattetes Web-Framework. Es existiert seit Jahren, und angesichts der großen Nutzerbasis ist es unwahrscheinlich, dass es in absehbarer Zeit verschwinden wird. Darüber hinaus haben wir engagierte Benutzer und Entwickler im Projekt. Apache Struts ist unter der Apache License 2.0 lizenziert, und das wird sich nicht ändern. Wir pflegen ein sauberes geistiges Eigentum, und Sie sind „sicher“, das Projekt zu nutzen. Manchmal ist man nicht „sicher“, ein Projekt zu nutzen, wenn ein Unternehmen das SCM kontrolliert. Der Zugriff auf den Quellcode bedeutet nicht, dass es frei ist. Mit Apache Struts sind Sie nicht nur frei, „damit zu tun, was Sie wollen“, Sie können sogar beitragen (was nicht immer der Fall ist). Und das Beste daran: Sie können auch Teil des Kernteams werden.
Es ist in der Regel sehr einfach, andere Technologien in Apache Struts zu integrieren. Wenn Sie ein ORM wie Apache Cayenne, Hibernate oder JDBC verwenden, haben Sie keine Einschränkungen. Apache Struts ist auch nicht zu sehr an eine Frontend-Technologie gebunden. Früher war es JSP, dann kamen Velocity und Freemarker. Heutzutage können Sie Ihre Webanwendung mit nur statischem HTML und AngularJS erstellen. Oder Sie möchten Sitemesh oder Tiles verwenden. All dies ist dank der eleganten und einfach zu bedienenden Erweiterungsmechanismen von Struts kein Problem.
Im Gegensatz zu anderen, komponentenorientierten Frameworks versuchen wir nicht, die Zustandslosigkeit des Webs zu verbergen. Wir denken, es ist vollkommen akzeptabel, auf einem Request/Response-Zyklus aufzubauen. Wir denken auch, dass das MVC-Muster gar nicht so schlecht ist, nur weil es alt ist. Tatsächlich glauben wir, dass die Apache-Struts-Architektur sauber und leicht zu verstehen ist.
Wenn Sie natürlich Komponenten auf der Serverseite erstellen möchten, die auf der Frontend-Seite gerendert werden, sind Sie mit Struts höchstwahrscheinlich falsch beraten. Dies ist ein anderer Ansatz, der verspricht, den erforderlichen HTML/JavaScript-Wissensstand zu reduzieren und wiederverwendbare Komponenten für die View-Ebene zu erstellen. Projekte wie Wicket und Tapestry erfüllen diesen Zweck sehr gut. Wie bei jedem Framework müssen Sie entscheiden, ob es für Sie sinnvoll ist, Komponenten zu erstellen, oder ob Sie mit dem Struts-Ansatz besser beraten sind.