Caching für Struts- und Tiles-Anwendungen konfigurieren

Verwenden Sie diese Task, um Struts- und Tiles-Anwendungen zwischenzuspeichern.

Vorbereitende Schritte

Voraussetzung für die Konfiguration des Caching für Struts und Tiles ist eine entwickelte Anwendung. Weitere Informationen zum Entwickeln von Struts- und Tiles-Anwendungen finden Sie auf der Website zum Apache Struts Web Application Framework.

Informationen zu diesem Vorgang

Verwenden Sie diese Task, wenn Sie Daten in Struts- und Tiles-Anwendungen zwischenspeichern möchten.

Struts ist ein Open-Source-Framework für die Erstellung von Webanwendungen mit der MVC-Architektur (Model-View-Controller, Modellsichtcontroller). Struts bietet eine eigene Controller-Komponente und kann in andere Technologien integriert werden, um das Modell (model) und die Anzeige (view) bereitzustellen. Struts stellt eine Steuerschicht für die Webanwendung bereit, wodurch Erstellungs- und Wartungskosten reduziert werden.

Das Tiles-Framework stützt sich auf das Feature jsp:include und ist im Struts-Framework für Webanwendungen enthalten. Das Tiles-Framework verringert die Duplizierung von JSP-Dateien (JavaServer Pages) und ermöglicht eine flexible und einfache Verwaltung von Website-Layouts, indem Präsentationsseiten aus einzelnen Komponenten zusammengestellt werden.

Das Struts- und Tiles-Caching ist eine Erweiterung des Servlet- und JSP-Caching. Deshalb sind die Aktionen für diese Caching-Typen sehr ähnlich. Weitere Informationen zum Servlet-Caching finden Sie im Artikel "Servlet-Caching konfigurieren".

Vorgehensweise

  1. Aktivieren Sie das Servlet- und JSP-Caching. Wenn Sie das Servlet-Caching aktivieren, wird das Caching für Struts und Tiles automatisch aktiviert. Weitere Informationen zum Servlet-Caching finden Sie im Artikel "Servlet-Caching konfigurieren".
  2. Entwickeln Sie die Cacherichtlinie. Für das Caching einer Struts- oder Tiles-Antwort muss eine Cacherichtlinie definiert werden.
    Gehen Sie zum Entwickeln einer Cacherichtlinie für Struts wie folgt vor:

    Das Struts-Framework stellt die Controllerkomponente in einer MVC-Anwendung bereit. Der Controller ist ein Servlet mit dem Namen org.apache.struts.action.ActionServlet.class. Der Datei web.xml der Anwendung wird eine Servlet-Zuordnung *.do für das Struts-Servlet ActionServlet hinzugefügt, damit alle Anforderungen für eine Webadresse, die mit .do enden, verarbeitet werden. Das Servlet ActionServlet verwendet die Informationen in der Datei struts-config.xml, um zu entscheiden, welche Struts-Aktionsklasse die Anforderung für die angegebene Ressource ausführt.

    In der früheren Version von WebSphere Application Server wurde pro Servlet nur eine Cacherichtlinie unterstützt. Hingegen wird, wenn Sie Struts verwenden, jede Anforderung, die mit .do endet, demselben Servlet ActionServlet zugeordnet. Wenn Sie Struts-Antworten zwischenspeichern möchten, schreiben Sie eine Cacherichtlinie für das Servlet ActionServlet, die auf dem Servlet-Pfad basiert.

    Im folgenden Beispiel werden die beiden Struts-Aktionen /HelloParam.do und /HelloAttr.do verwendet. Wenn Sie die Antworten basierend auf dem Anforderungsparameter id bzw. dem Anforderungsattribut arg zwischenspeichern möchten, verwenden Sie die folgende Cacherichtlinie:
    <cache-entry>
    	<class>servlet</class>
    	<name>org.apache.struts.action.ActionServlet.class</name>
    	<cache-id>
    		<component id="" type="servletpath">
    			<value>/HelloParm.do</value>
    		</component>
    	</cache-id>
    	<cache-id>
    		<component id="" type="servletpath">
    			<value>/HelloAttr.do</value>
    		</component>
    		<component id="arg" type="attribute">
    			<required>true</required>
    		</component>
    	</cache-id>
    </cache-entry>
    In der aktuellen Version von WebSphere Application Server können Sie einem Servlet mehrere Cacherichtlinien zuordnen. Sie können die zuvor beschriebene Cacherichtlinie wie folgt umschreiben:
    <cache-entry>
    	<class>servlet>
    	<name>/HelloParam.do</name>
    	<cache-id>
    		<component id="id" type="parameter">
    			<required>true</required>
    		</component>
    </cache-entry>
    <cache-entry>
    	<class>servlet</class>
    	<name>/HelloAttr.do</name>
    	<cache-id>
    		<component id="arg" type="attribute">
    			<required>true</required>
    		</component>
    	</cache-id>
    </cache-entry>
    Gehen Sie zum Entwickeln einer Cacherichtlinie für Tiles wie folgt vor:
    Das Tiles-Framework basiert auf dem Tag jsp:include, sodass alles, was für das JSP-Caching gilt, auch für Tiles zutrifft. Sie müssen das Attribut "flush" in allen Fragmenten, die mit dem Tag tiles:insert eingefügt werden, auf true setzen, damit die Fragmente ordnungsgemäß zwischengespeichert werden. Das zusätzliche Feature beim Tiles-Caching im Vergleich mit dem JSP-Caching basiert auf dem Attribut tiles. Sie könnten beispielsweise die folgende Schablone layout.jsp entwickeln:
    <html>
    	<%String categoryId = request.getParameter("categoryId")+"test"; %>
    	<tiles:insert attribute="header">
    		<tiles:put name="categoryId" value="<%= categoryId %>" />
    	</tile:insert>
    	<table>
    		<tr>
    			<td width="70%" valign="top"><tiles:insert attribute="body" /> </td>
    		</tr>
    		<tr>
    			<td colspan="2"><tiles:insert attribute="footer" /></td>
    		</tr>
    	</table>
    </body>
    </html>
    Das verschachtelte Tag tiles:put gibt das Attribut des eingefügten tile-Elements an. In der Schablone layout.jsp wird das Attribut categoryId definiert und an das tile-Element übergeben, das in den Platzhalter für den Header eingefügt wird. Im folgenden Beispiel wird die Datei layout.jsp in eine andere JSP-Datei eingefügt:
    <html>
    <body>
    <tiles:insert page="layout.jsp?categoryId=1002" flush="true">
    	<tiles:put name="header" value="/header.jsp" />
    	<tiles:put name="body" value="/body.jsp" />
    	<tiles:put name="footer" value="/footer.jsp" />
    </tiles:insert>
    </body>
    </html>
    Das Tile-Attribut categoryId wird an die Datei header.jsp übergeben. Die Datei header.jsp kann das Tag <tiles:useAttribute> verwenden, um den Wert von categoryId abzurufen. Wenn Sie die Datei header.jsp basierend auf dem Wert des Attributs categoryId zwischenspeichern möchten, können Sie die folgende Cacherichtlinie verwenden:
    <cache-entry>
    	<class>servlet</class>
    	<name>/header.jsp</name>
    	<cache-id>
    		<component id="categoryId" type="tiles_attribute">
    		<required>true</required>
    		</component>
    	</cache-id>
    </cache-entry>
  3. Vergewissern Sie sich, dass die Cacherichtlinie ordnungsgemäß funktioniert. Sie können die Richtlinien in der Datei cachespec.xml ändern, während die Anwendung ausgeführt wird. Weitere Informationen zu den Cacherichtlinien finden Sie im Artikel "Cachefähige Objekte mit der Datei 'cachespec.xml' konfigurieren".

Ergebnisse

Nächste Schritte

Weitere Informationen zum dynamischen Cache finden Sie in der "Taskübersicht: Mit dem dynamischen Cacheservice die Leistung verbessern".

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tdyn_strutstiles
Dateiname:tdyn_strutstiles.html