Tapestry
aus Wikipedia, der freien Enzyklopädie
Tapestry ist ein Open-Source-Framework für die Programmiersprache Java, mit dem Webanwendungen erstellt werden können. Es ist kein eigenständiger Server, sondern läuft im Kontext eines Servlet-Containers wie dem Web-Application-Server Tomcat. Tapestry ist ein Toplevel-Projekt der Apache Software Foundation.
Tapestry-Anwendungen bestehen aus einer gewissen Anzahl von Seiten, wobei eine Seite aus wiederverwendbaren und konfigurierbaren Komponenten besteht.
In Tapestry beschreiben drei Bestandteile eine Seite. Dies sind eine HTML-Vorlage, eine Seitenspezifikation und eine Javaklasse. Die Besonderheit der HTML-Vorlage ist, dass sie neben HTML-Tags spezifische Tapestry-Tags für den dynamischen Inhalt enthält. Eine Hauptaufgabe der Seitenspezifikation ist, die Javaklasse festzulegen, die mit dieser Seite zu instanzieren ist. Die Javaklasse stellt schließlich die Verbindung zu einer Javaanwendung her.
Mit seiner komponentenbasierten Architektur, der Trennung von Darstellung (HTML, XML) und Code ähnelt Tapestry konzeptuell WebObjects, ohne mit diesem kompatibel zu sein. Zusammen mit Cayenne eingesetzt ist es durchaus als freier WebObjects-Ersatz verwendbar, der Wechsel von einem Framework zum anderen sollte für mit einem der beiden Frameworks erfahrene Entwickler aufgrund der Ähnlichkeiten reibungslos vonstatten gehen.
[Bearbeiten] Vorteile
Tapestry existiert, um die Entwicklung von Java-Web-Anwendungen zu vereinfachen. Das Framework wurde so entworfen, dass es einfacher möglich ist, robuste Anwendungen zu erzeugen, die wiederum einfacher zu erstellen, zu debuggen und zu warten sind, als herkömmliche Servlet-Anwendungen. Es nimmt dem Entwickler die Sorgen über Multithreading ab. Durch die klare Trennung von HTML- und Anwendungscode können Java- und HTML-Entwickler gemeinsam an einem Projekt arbeiten. Tapestry unterstützt darüber hinaus die Internationalisierung von Anwendungen sowie die Validierung von Benutzereingaben und bietet eine Reihe von vorgefertigten GUI-Komponenten wie Kalender, sortierbare Tabellen und Bäume. Der Funktionsumfang kann über das Erstellen eigener Komponenten erweitert werden.
[Bearbeiten] Rewinding
In Tapestry findet die Übertragung von Daten mit Hilfe eines Formulars in drei Schritten statt: Im ersten Schritt wird die HTML-Seite mit dem Formular gerendert. Der Nutzer editiert im zweiten Schritt die Eingabefelder des Formulars, und startet schließlich die dritte Phase, indem er die Submit-Schaltfläche betätigt.
Der Vorgang hat zwei Request-Zyklen zur Folge. Im ersten Zyklus wird die HTML-Seite angefordert und das Formular wird in diesem Zyklus gerendert. Der zweite Request-Zyklus wird beim Betätigen der Submit-Schaltfläche angestoßen.
In diesem Zyklus muss Tapestry die folgenden Aktionen ausführen:
- die Werte aus den Eingabefeldern sind zu extrahieren
- diese Werte sind manchmal zu konvertieren (String in Integer)
- die konvertierten Werte sind den richtigen Page/Componenten-Properties zuzuweisen
Da in Tapestry die Zuordnung der Properties zu den Eingabefeldern während des Rendering erfolgt, nutzt Tapestry eine ungewöhnliche Herangehensweise: Es ermittelt genau diese Beziehungen, indem die Seite erneut gerendert wird. Diese Phase wird auch Rewind-Phase genannt.
In dieser Phase wird jede Komponente in der Form in der gleichen Reihenfolge besucht, wie es beim initalen Rendern geschieht und es werden die oben beschriebenen Aktionen ausgeführt. Im Unterschied zum initialen Rendervorgang wird die Listener-Methode der Submit-Form nur in der Rewinding-Phase aufgerufen.