Integration von Streben 2 und Fliesen
Lassen Sie uns in diesem Kapitel die Schritte zur Integration des Tiles-Frameworks in Struts2 durchgehen. Apache Tiles ist ein Vorlagen-Framework, das die Entwicklung von Benutzeroberflächen für Webanwendungen vereinfacht.
Zunächst müssen wir die Kacheldateien von der Apache Tiles- Website herunterladen. Sie müssen die folgenden JAR-Dateien zum Klassenpfad des Projekts hinzufügen.
- tiles-api-x.y.z.jar
- tiles-compat-x.y.z.jar
- tiles-core-x.y.z.jar
- tiles-jsp-x.y.z.jar
- tiles-servlet-x.y.z.jar
Darüber hinaus müssen wir die folgenden JAR-Dateien aus dem struts2-Download in Ihre kopieren WEB-INF/lib.
- commons-beanutils-x.y.zjar
- commons-digester-x.y.jar
- struts2-tiles-plugin-x.y.z.jar
Lassen Sie uns nun das einrichten web.xmlfür die Struts-Tiles-Integration wie unten angegeben. Hier sind zwei wichtige Punkte zu beachten. Zuerst müssen wir den Kacheln mitteilen, wo sich die Kacheln-Konfigurationsdatei befindettiles.xml. In unserem Fall wird es unter sein/WEB-INFMappe. Als nächstes müssen wir den Tiles-Listener starten, der mit dem Struts2-Download geliefert wird.
<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id = "WebApp_ID" version = "2.5">
<display-name>Struts2Example15</display-name>
<context-param>
<param-name>
org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
</param-name>
<param-value>
/WEB-INF/tiles.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Als nächstes lassen Sie uns erstellen tiles.xml unter / WEB-INF Ordner mit folgenden Inhalten -
<?xml version = "1.0" Encoding = "UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name = "baseLayout" template="/baseLayout.jsp">
<put-attribute name = "title" value = "Template"/>
<put-attribute name = "banner" value = "/banner.jsp"/>
<put-attribute name = "menu" value = "/menu.jsp"/>
<put-attribute name = "body" value = "/body.jsp"/>
<put-attribute name = "footer" value = "/footer.jsp"/>
</definition>
<definition name = "tiger" extends = "baseLayout">
<put-attribute name = "title" value = "Tiger"/>
<put-attribute name = "body" value = "/tiger.jsp"/>
</definition>
<definition name = "lion" extends = "baseLayout">
<put-attribute name = "title" value = "Lion"/>
<put-attribute name = "body" value = "/lion.jsp"/>
</definition>
</tiles-definitions>
Als nächstes definieren wir ein grundlegendes Skelettlayout in der baseLayout.jsp. Es verfügt über fünf wiederverwendbare / überschreibbare Bereiche. Nämlichtitle, banner, menu, body und footer. Wir stellen die Standardwerte für das baseLayout bereit und erstellen dann zwei Anpassungen, die vom Standardlayout ausgehen. Das Tiger-Layout ähnelt dem Grundlayout, verwendet jedoch dastiger.jspals Körper und der Text "Tiger" als Titel. In ähnlicher Weise ähnelt das Löwenlayout dem Grundlayout, verwendet jedoch daslion.jsp als Körper und der Text "Löwe" als Titel.
Schauen wir uns die einzelnen JSP-Dateien an. Es folgt der Inhalt vonbaseLayout.jsp Datei -
<%@ taglib uri = "http://tiles.apache.org/tags-tiles" prefix = "tiles"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset = UTF-8">
<title>
<tiles:insertAttribute name = "title" ignore="true" />
</title>
</head>
<body>
<tiles:insertAttribute name = "banner" /><br/>
<hr/>
<tiles:insertAttribute name = "menu" /><br/>
<hr/>
<tiles:insertAttribute name = "body" /><br/>
<hr/>
<tiles:insertAttribute name = "footer" /><br/>
</body>
</html>
Hier haben wir nur eine einfache HTML-Seite zusammengestellt, die die Kachelattribute enthält. Wir fügen die Kachelattribute an den Stellen ein, an denen sie benötigt werden. Als nächstes erstellen wir einebanner.jsp Datei mit folgendem Inhalt -
<img src="http://www.tutorialspoint.com/images/tp-logo.gif"/>
Das menu.jsp Die Datei enthält die folgenden Zeilen, die die Links darstellen - zu den Strut-Aktionen TigerMenu.action und LionMenu.action.
<%@taglib uri = "/struts-tags" prefix = "s"%>
<a href = "<s:url action = "tigerMenu"/>" Tiger</a><br>
<a href = "<s:url action = "lionMenu"/>" Lion</a><br>
Das lion.jsp Datei wird folgenden Inhalt haben -
<img src="http://upload.wikimedia.org/wikipedia/commons/d/d2/Lion.jpg"/>
The lion
Das tiger.jsp Datei wird folgenden Inhalt haben -
<img src="http://www.freewebs.com/tigerofdarts/tiger.jpg"/>
The tiger
Als nächstes erstellen wir die Aktionsklassendatei MenuAction.java welches das folgende enthält -
package com.tutorialspoint.struts2;
import com.opensymphony.xwork2.ActionSupport;
public class MenuAction extends ActionSupport {
public String tiger() { return "tiger"; }
public String lion() { return "lion"; }
}
Dies ist eine ziemlich einfache Klasse. Wir haben zwei Methoden tiger () und lion () deklariert, die Tiger und Löwe als Ergebnisse zurückgeben. Lassen Sie uns alles in derstruts.xml Datei -
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name = "default" extends = "struts-default">
<result-types>
<result-type name = "tiles"
class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name = "*Menu" method = "{1}"
class = "com.tutorialspoint.struts2.MenuAction">
<result name = "tiger" type = "tiles">tiger</result>
<result name = "lion" type = "tiles">lion</result>
</action>
</package>
</struts>
Lassen Sie uns überprüfen, was wir in der obigen Datei getan haben. Zunächst haben wir einen neuen Ergebnistyp namens "Kacheln" deklariert, da wir jetzt Kacheln anstelle von einfachem JSP für die Ansichtstechnologie verwenden. Struts2 unterstützt den Ergebnistyp "Kachelnansicht". Daher erstellen wir den Ergebnistyp "Kacheln" der Klasse "org.apache.struts2.view.tiles.TilesResult".
Als nächstes möchten wir sagen, ob die Anfrage für /tigerMenu.action ist, den Benutzer zur Seite mit den Tiger-Kacheln bringen und wenn die Anfrage für /lionMenu.action ist, den Benutzer zur Seite für Löwenkacheln bringen.
Dies erreichen wir mit ein wenig regulärem Ausdruck. In unserer Aktionsdefinition sagen wir, dass alles, was dem Muster "* Menü" entspricht, von dieser Aktion behandelt wird. Die Matching-Methode wird in der MenuAction-Klasse aufgerufen. Das heißt, tigerMenu.action ruft tiger () und lionMenu.action lion () auf. Wir müssen dann das Ergebnis des Ergebnisses den entsprechenden Kachelseiten zuordnen.
Klicken Sie nun mit der rechten Maustaste auf den Projektnamen und klicken Sie auf Export > WAR Fileum eine War-Datei zu erstellen. Stellen Sie diese WAR dann im Webanwendungsverzeichnis von Tomcat bereit. Starten Sie abschließend den Tomcat-Server und versuchen Sie, auf die URL zuzugreifenhttp://localhost:8080/HelloWorldStruts2/tigerMenu.jsp. Daraufhin wird der folgende Bildschirm angezeigt:
Wenn Sie zur Seite lionMenu.action gelangen, wird die Seite Lion angezeigt, die dasselbe Kachellayout verwendet.