Struts 2 - Konfigurationsdateien
Dieses Kapitel führt Sie durch die Grundkonfiguration, die für a erforderlich ist Struts 2Anwendung. Hier sehen wir, was mit Hilfe einiger wichtiger Konfigurationsdateien wie konfiguriert werden kannweb.xml, struts.xml, strutsconfig.xml und struts.properties
Ehrlich gesagt können Sie mit der Arbeit beginnen, indem Sie einfach verwenden web.xml und struts.xmlKonfigurationsdateien (wie Sie bereits in unserem vorherigen Kapitel gesehen haben, in dem unser Beispiel mit diesen beiden Dateien gearbeitet hat). Nach Ihrem Wissen werden wir jedoch auch andere Dateien erläutern.
Die Datei web.xml
Die Konfigurationsdatei web.xml ist eine J2EE-Konfigurationsdatei, die bestimmt, wie Elemente der HTTP-Anforderung vom Servlet-Container verarbeitet werden. Es handelt sich nicht ausschließlich um eine Struts2-Konfigurationsdatei, sondern um eine Datei, die konfiguriert werden muss, damit Struts2 funktioniert.
Wie bereits erwähnt, bietet diese Datei einen Einstiegspunkt für jede Webanwendung. Der Einstiegspunkt der Struts2-Anwendung ist ein Filter, der im Bereitstellungsdeskriptor (web.xml) definiert ist. Daher definieren wir einen Eintrag der FilterDispatcher- Klasse in web.xml. Die Datei web.xml muss unter dem Ordner erstellt werdenWebContent/WEB-INF.
Dies ist die erste Konfigurationsdatei, die Sie konfigurieren müssen, wenn Sie ohne die Hilfe einer Vorlage oder eines Tools starten, das sie generiert (z. B. Eclipse oder Maven2).
Im Folgenden finden Sie den Inhalt der Datei web.xml, die wir in unserem letzten Beispiel verwendet haben.
<?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_3_0.xsd"
id = "WebApp_ID" version = "3.0">
<display-name>Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Beachten Sie, dass wir den Filter Struts 2 zuordnen /*und nicht zu /*.actionDies bedeutet, dass alle URLs vom Struts-Filter analysiert werden. Wir werden dies behandeln, wenn wir das Kapitel Anmerkungen durchgehen.
Die Struts.xml-Datei
Das struts.xmlDie Datei enthält die Konfigurationsinformationen, die Sie bei der Entwicklung von Aktionen ändern werden. Diese Datei kann verwendet werden, um Standardeinstellungen für eine Anwendung zu überschreiben, z. B. struts.devMode = false und andere Einstellungen, die in der Eigenschaftendatei definiert sind. Diese Datei kann unter dem Ordner erstellt werdenWEB-INF/classes.
Werfen wir einen Blick auf die Datei struts.xml, die wir im im vorherigen Kapitel erläuterten Hello World-Beispiel erstellt haben.
<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name = "struts.devMode" value = "true" />
<package name = "helloworld" extends = "struts-default">
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success">/HelloWorld.jsp</result>
</action>
<-- more actions can be listed here -->
</package>
<-- more packages can be listed here -->
</struts>
Das erste, was zu beachten ist, ist das DOCTYPE. Alle Struts-Konfigurationsdateien müssen den richtigen Doctype haben, wie in unserem kleinen Beispiel gezeigt. <struts> ist das Root-Tag-Element, unter dem wir verschiedene Pakete mit <package> -Tags deklarieren. Hier ermöglicht <Paket> die Trennung und Modularisierung der Konfiguration. Dies ist sehr nützlich, wenn Sie ein großes Projekt haben und das Projekt in verschiedene Module unterteilt ist.
Wenn Ihr Projekt beispielsweise drei Domänen hat - business_application, customer_application und staff_application, können Sie drei Pakete erstellen und zugehörige Aktionen im entsprechenden Paket speichern.
Das Paket-Tag hat die folgenden Attribute:
Sr.Nr. | Attribut & Beschreibung |
---|---|
1 | name (required) Die eindeutige Kennung für das Paket |
2 | extends Von welchem Paket erstreckt sich dieses Paket? Standardmäßig verwenden wir struts-default als Basispaket. |
3 | abstract Wenn dies als wahr markiert ist, ist das Paket nicht für den Endbenutzer verfügbar. |
4 | namespace Eindeutiger Namespace für die Aktionen |
Das constant Tag zusammen mit Namens- und Wertattributen sollten verwendet werden, um eine der folgenden Eigenschaften zu überschreiben, die in definiert sind default.properties, wie wir gerade eingestellt haben struts.devModeEigentum. Rahmenstruts.devMode Mit dieser Eigenschaft können weitere Debug-Meldungen in der Protokolldatei angezeigt werden.
Wir definieren action Tags entsprechen jeder URL, auf die wir zugreifen möchten, und wir definieren eine Klasse mit der Methode execute (), auf die zugegriffen wird, wenn auf die entsprechende URL zugegriffen wird.
Die Ergebnisse bestimmen, was nach Ausführung einer Aktion an den Browser zurückgegeben wird. Die von der Aktion zurückgegebene Zeichenfolge sollte der Name eines Ergebnisses sein. Die Ergebnisse werden pro Aktion wie oben oder als "globales" Ergebnis konfiguriert, das für jede Aktion in einem Paket verfügbar ist. Ergebnisse sind optionalname und typeAttribute. Der Standardwert für den Namen ist "Erfolg".
Die Struts.xml-Datei kann mit der Zeit sehr groß werden. Das Aufteilen nach Paketen ist daher eine Möglichkeit, sie zu modularisieren Strutsbietet eine andere Möglichkeit, die Datei struts.xml zu modularisieren. Sie können die Datei in mehrere XML-Dateien aufteilen und auf folgende Weise importieren.
<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="my-struts1.xml"/>
<include file="my-struts2.xml"/>
</struts>
Die andere Konfigurationsdatei, die wir nicht behandelt haben, ist die Datei struts-default.xml. Diese Datei enthält die Standardkonfigurationseinstellungen für Struts, und Sie müssten diese Einstellungen für 99,99% Ihrer Projekte nicht berühren. Aus diesem Grund gehen wir in dieser Datei nicht zu sehr ins Detail. Wenn Sie interessiert sind, werfen Sie einen Blick in diedefault.properties Datei verfügbar in der Datei struts2-core-2.2.3.jar.
Die Datei Struts-config.xml
Die Konfigurationsdatei struts-config.xml ist eine Verknüpfung zwischen den Komponenten Ansicht und Modell im Webclient, aber Sie müssten diese Einstellungen für 99,99% Ihrer Projekte nicht berühren.
Die Konfigurationsdatei enthält im Wesentlichen folgende Hauptelemente:
Sr.Nr. | Abfangjäger & Beschreibung |
---|---|
1 | struts-config Dies ist der Stammknoten der Konfigurationsdatei. |
2 | form-beans Hier ordnen Sie Ihre ActionForm-Unterklasse einem Namen zu. Sie verwenden diesen Namen als Alias für Ihre ActionForm im Rest der Datei strutsconfig.xml und sogar auf Ihren JSP-Seiten. |
3 | global forwards In diesem Abschnitt wird eine Seite in Ihrer Webanwendung einem Namen zugeordnet. Mit diesem Namen können Sie auf die aktuelle Seite verweisen. Dadurch wird vermieden, dass URLs auf Ihren Webseiten fest codiert werden. |
4 | action-mappings Hier deklarieren Sie Formularhandler, die auch als Aktionszuordnungen bezeichnet werden. |
5 | controller In diesem Abschnitt werden Struts-Interna konfiguriert und in praktischen Situationen nur selten verwendet. |
6 | plug-in In diesem Abschnitt erfahren Sie von Struts, wo sich Ihre Eigenschaftendateien befinden, die Eingabeaufforderungen und Fehlermeldungen enthalten |
Es folgt die Beispieldatei struts-config.xml -
<?xml version = "1.0" Encoding = "ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
<struts-config>
<!-- ========== Form Bean Definitions ============ -->
<form-beans>
<form-bean name = "login" type = "test.struts.LoginForm" />
</form-beans>
<!-- ========== Global Forward Definitions ========= -->
<global-forwards>
</global-forwards>
<!-- ========== Action Mapping Definitions ======== -->
<action-mappings>
<action
path = "/login"
type = "test.struts.LoginAction" >
<forward name = "valid" path = "/jsp/MainMenu.jsp" />
<forward name = "invalid" path = "/jsp/LoginView.jsp" />
</action>
</action-mappings>
<!-- ========== Controller Definitions ======== -->
<controller contentType = "text/html;charset = UTF-8"
debug = "3" maxFileSize = "1.618M" locale = "true" nocache = "true"/>
</struts-config>
Weitere Informationen zur Datei struts-config.xml finden Sie in der Dokumentation zu struts.
Die Struts.properties-Datei
Diese Konfigurationsdatei bietet einen Mechanismus zum Ändern des Standardverhaltens des Frameworks. Eigentlich sind alle Eigenschaften in derstruts.properties Konfigurationsdatei kann auch in der konfiguriert werden web.xml Verwendung der init-param, auch mit dem konstanten Tag in der struts.xmlKonfigurationsdatei. Wenn Sie jedoch die Dinge getrennt und die Streben spezifischer halten möchten, können Sie diese Datei unter dem Ordner erstellenWEB-INF/classes.
Die in dieser Datei konfigurierten Werte überschreiben die in konfigurierten Standardwerte default.propertieswelches in der struts2-core-xyzjar-Distribution enthalten ist. Es gibt einige Eigenschaften, die Sie möglicherweise mit ändern könnenstruts.properties Datei -
### When set to true, Struts will act much more friendly for developers
struts.devMode = true
### Enables reloading of internationalization files
struts.i18n.reload = true
### Enables reloading of XML configuration files
struts.configuration.xml.reload = true
### Sets the port that the server is run on
struts.url.http.port = 8080
Hier jede Zeile beginnend mit hash (#) wird als Kommentar angenommen und von ignoriert Struts 2.