Struts
Apache Struts war eines der ersten Java-Web-Frameworks. Die erste Generation des Struts-Frameworks wurde schon kurz nach der Einführung der JavaServer Pages Mitte 2000 vorgestellt und war über lange Jahre der Quasistandard für Java-Web-Frameworks schlechthin. Im Jahr 2007 erschien die zweite Generation von Struts. Struts 2 ist eine Abspaltung von Struts 1 und aus dem Java-Web-Framework WebWork entstanden. Struts 1 wird nicht mehr länger unterstützt (siehe Press-Release). Aktuell gibt es die Version 2.3 des von der Apache Software Foundation gehosteten Frameworks. Es steht unter der Apache Lizenz 2.0 und kann somit bedenkenlos auch für kommerzielle Anwendungen eingesetzt werden.
Struts 2 gehört zu den Frameworks, die auf einer MVC-Architektur aufbauen (siehe Abbildung). Das Model einer Struts-Web-Anwendung beinhaltet wie üblich die Geschäftslogik und die zur Anzeige benötigten Daten. Bei Struts bezeichnet man diese Teile als Action-Klassen. Den Part der Views übernehmen JavaServer Pages. Sie bestehen aus HTML-Code, der mittels einer Struts-Tag-Library um spezifische Tags zum Beispiel für Oberflächenkomponenten wie Textfelder angereichert wird. Die Steuerung übernimmt ein eigenes Struts-Servlet auf Basis einer speziellen Konfigurationsdatei. In dieser Datei ist unter anderem das Verhalten für die Actions definiert.
Einer der wichtigsten Bestandteile eines Web-Frameworks ist die Unterstützung der Eingabevalidierung. Struts verfügt über ein eigenes Validation-Framework namens XWork, dessen Ursprünge auf WebWork zurückgehen. Das Validation-Framework kennt zwei Arten von Validatoren: Feldvalidatoren und globale Validatoren. Mit den Feldvalidatoren lassen sich Plausibilisierungen auf Feldebene vornehmen, wie zum Beispiel eine E-Mail-Adresse oder eine Kreditkartennummer. Globale Validatoren sind hingegen in der Lage ganze Formulare zu überprüfen.
Wer nach komplexen GUI-Komponenten wie Ajax-DataTables im Basis-Framework sucht, wie sie bei der JSF-Konkurrenz PrimeFaces zu finden sind, wird enttäuscht. Abhilfe kommt mit entsprechenden Plug-ins, zum Beispiel aus dem Fundus der JavaScript-Bibliothek jQuery Javascript Library (siehe Textkasten unten: "JavaScript-Bibliotheken). Die Dokumentation ist, wie inzwischen bei allen Apache-Top-Level-Projekten, sehr gut. Sie wird durch reichlich Fachliteratur ergänzt. Struts-2-Anwendungen haben keine großen Ansprüche an die Laufzeitumgebung. Sie können mit jedem einfachen Servlet-Container wie beispielsweise Jetty oder Tomcat betrieben werden.
Fazit: Struts 1 war der De-Facto-Standard bei Java-Webframework. Aufgrund der Entwicklung von JavaServer Faces konnte Struts 2 niemals die Bedeutung der ersten Generation erlangen. Das hat nichts mit seiner Qualität zu tun, sondern ist einfach dem sehr ähnlichen JSF-Standard geschuldet. Hinter der Zukunft dieses Web-Frameworks muss man daher ein Fragezeichen setzen. Es ist zu erwarten, dass viele Firmen ihre Struts-1-Anwendungen lieber auf JSF als auf Struts 2 migrieren.