Streben 2 - Hallo Welt Beispiel
Wie Sie bereits aus der Struts 2-Architektur gelernt haben, wird die Eingabe beim Klicken auf einen Hyperlink oder beim Senden eines HTML-Formulars in einer Struts 2-Webanwendung vom Controller gesammelt und an eine Java-Klasse namens Actions gesendet. Nachdem die Aktion ausgeführt wurde, wählt ein Ergebnis eine Ressource aus, um die Antwort zu rendern. Die Ressource ist im Allgemeinen eine JSP, kann aber auch eine PDF-Datei, eine Excel-Tabelle oder ein Java-Applet-Fenster sein.
Angenommen, Sie haben Ihre Entwicklungsumgebung bereits erstellt. Lassen Sie uns nun mit dem Bau unseres ersten fortfahrenHello World Struts2Projekt. Ziel dieses Projekts ist es, eine Webanwendung zu erstellen, die den Benutzernamen sammelt und "Hello World" gefolgt vom Benutzernamen anzeigt.
Wir müssten die folgenden vier Komponenten für jedes Struts 2-Projekt erstellen:
Sr.Nr. | Komponenten & Beschreibung |
---|---|
1 | Action Erstellen Sie eine Aktionsklasse, die die vollständige Geschäftslogik enthält, und steuern Sie die Interaktion zwischen dem Benutzer, dem Modell und der Ansicht. |
2 | Interceptors Erstellen Sie bei Bedarf Interceptors oder verwenden Sie vorhandene Interceptors. Dies ist Teil von Controller. |
3 | View Erstellen Sie JSPs, um mit dem Benutzer zu interagieren, Eingaben vorzunehmen und die endgültigen Nachrichten zu präsentieren. |
4 | Configuration Files Erstellen Sie Konfigurationsdateien, um die Aktion, Ansicht und Controller zu koppeln. Diese Dateien sind struts.xml, web.xml, struts.properties. |
Ich werde Eclipse IDE verwenden, damit alle erforderlichen Komponenten unter einem dynamischen Webprojekt erstellt werden. Beginnen wir nun mit der Erstellung eines dynamischen Webprojekts.
Erstellen Sie ein dynamisches Webprojekt
Starten Sie Ihre Eclipse und gehen Sie dann mit File > New > Dynamic Web Project und geben Sie den Projektnamen als ein HelloWorldStruts2 und stellen Sie die restlichen Optionen wie im folgenden Bildschirm angegeben ein -
Wählen Sie in den nächsten Bildschirmen alle Standardoptionen aus und überprüfen Sie sie schließlich Generate Web.xml deployment descriptorMöglichkeit. Dadurch wird in Eclipse ein dynamisches Webprojekt für Sie erstellt. Jetzt geh mitWindows > Show View > Project Explorer, und Sie werden Ihr Projektfenster wie folgt sehen -
Kopieren Sie nun die folgenden Dateien aus dem Ordner struts 2 lib C:\struts-2.2.3\lib zu unseren Projekten WEB-INF\libMappe. Dazu können Sie einfach alle folgenden Dateien in den Ordner WEB-INF \ lib ziehen und dort ablegen.
- commons-fileupload-x.y.z.jar
- commons-io-x.y.z.jar
- commons-lang-x.y.jar
- commons-logging-x.y.z.jar
- commons-logging-api-x.y.jar
- freemarker-x.y.z.jar
- javassist-.xy.z.GA
- ognl-x.y.z.jar
- struts2-core-x.y.z.jar
- xwork-core.x.y.z.jar
Aktionsklasse erstellen
Die Aktionsklasse ist der Schlüssel zur Struts 2-Anwendung, und wir implementieren den größten Teil der Geschäftslogik in die Aktionsklasse. Erstellen wir also eine Java-Datei HelloWorldAction.java unterJava Resources > src mit einem Paketnamen com.tutorialspoint.struts2 mit den unten angegebenen Inhalten.
Die Action-Klasse reagiert auf eine Benutzeraktion, wenn der Benutzer auf eine URL klickt. Eine oder mehrere Methoden der Action-Klasse werden ausgeführt und ein String-Ergebnis zurückgegeben. Basierend auf dem Wert des Ergebnisses wird eine bestimmte JSP-Seite gerendert.
package com.tutorialspoint.struts2;
public class HelloWorldAction {
private String name;
public String execute() throws Exception {
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Dies ist eine sehr einfache Klasse mit einer Eigenschaft namens "Name". Wir haben Standard-Getter- und Setter-Methoden für die Eigenschaft "name" und eine Ausführungsmethode, die die Zeichenfolge "success" zurückgibt.
Das Struts 2-Framework erstellt ein Objekt des HelloWorldActionKlasse und rufen Sie die ausgeführte Methode als Antwort auf die Aktion eines Benutzers auf. Sie fügen Ihre Geschäftslogik in diese Methode ein, die schließlich die String-Konstante zurückgibt. Mit anderen Worten, für jede URL müssten Sie eine Aktionsklasse implementieren. Entweder können Sie diesen Klassennamen direkt als Aktionsnamen verwenden oder Sie können einen anderen Namen mithilfe der Datei struts.xml zuordnen, wie unten gezeigt.
Erstellen Sie eine Ansicht
Wir benötigen eine JSP, um die endgültige Nachricht zu präsentieren. Diese Seite wird vom Struts 2-Framework aufgerufen, wenn eine vordefinierte Aktion ausgeführt wird, und diese Zuordnung wird in der Datei struts.xml definiert. Lassen Sie uns also die folgende JSP-Datei erstellenHelloWorld.jspim WebContent-Ordner in Ihrem Eclipse-Projekt. Klicken Sie dazu im Projektexplorer mit der rechten Maustaste auf den Ordner WebContent und wählen SieNew >JSP File.
<%@ page contentType = "text/html; charset = UTF-8" %>
<%@ taglib prefix = "s" uri = "/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World, <s:property value = "name"/>
</body>
</html>
Die taglib-Direktive teilt dem Servlet-Container mit, dass diese Seite das verwendet Struts 2 Tags und dass diesen Tags vorangestellt werden s.
Das s: property-Tag zeigt den Wert der Aktionsklasseneigenschaft "name>" an, der von der Methode zurückgegeben wird getName() der HelloWorldAction-Klasse.
Hauptseite erstellen
Wir müssen auch schaffen index.jspim WebContent-Ordner. Diese Datei dient als erste Aktions-URL, über die ein Benutzer das Struts 2-Framework anweisen kann, eine definierte Methode der HelloWorldAction-Klasse aufzurufen und die Ansicht HelloWorld.jsp zu rendern.
<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action = "hello">
<label for = "name">Please enter your name</label><br/>
<input type = "text" name = "name"/>
<input type = "submit" value = "Say Hello"/>
</form>
</body>
</html>
Das helloDie in der obigen Ansichtsdatei definierte Aktion wird der HelloWorldAction-Klasse und ihrer Ausführungsmethode mithilfe der Datei struts.xml zugeordnet. Wenn ein Benutzer auf die Schaltfläche Senden klickt, führt das Struts 2-Framework die in der HelloWorldAction-Klasse definierte Ausführungsmethode aus. Basierend auf dem zurückgegebenen Wert der Methode wird eine entsprechende Ansicht ausgewählt und als Antwort gerendert.
Konfigurationsdateien
Wir benötigen eine Zuordnung, um die URL, die HelloWorldAction-Klasse (Modell) und die HelloWorld.jsp (die Ansicht) miteinander zu verknüpfen. Die Zuordnung teilt dem Struts 2-Framework mit, welche Klasse auf die Aktion des Benutzers (die URL) reagiert, welche Methode dieser Klasse ausgeführt wird und welche Ansicht basierend auf dem von dieser Methode zurückgegebenen String-Ergebnis gerendert werden soll.
Lassen Sie uns also eine Datei namens erstellen struts.xml. Da Struts 2 erfordert, dass struts.xml im Klassenordner vorhanden ist. Erstellen Sie daher die Datei struts.xml im Ordner WebContent / WEB-INF / classes. Eclipse erstellt standardmäßig nicht den Ordner "Klassen", daher müssen Sie dies selbst tun. Klicken Sie dazu im Projektexplorer mit der rechten Maustaste auf den Ordner WEB-INF und wählen SieNew > Folder. Ihre struts.xml sollte aussehen wie -
<?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>
</package>
</struts>
Einige Wörter, die in Bezug auf die obige Konfigurationsdatei verstanden werden müssen. Hier setzen wir die Konstantestruts.devMode zu true, weil wir in einer Entwicklungsumgebung arbeiten und einige nützliche Protokollmeldungen sehen müssen. Dann definieren wir ein Paket namenshelloworld.
Das Erstellen eines Pakets ist nützlich, wenn Sie Ihre Aktionen zusammenfassen möchten. In unserem Beispiel haben wir unsere Aktion als "Hallo" bezeichnet, was der URL entspricht/hello.action und wird von der gesichertHelloWorldAction.class. Dasexecute Methode von HelloWorldAction.class ist die Methode, die ausgeführt wird, wenn die URL /hello.actionwird aufgerufen. Wenn das Ergebnis der Methode execute "success" zurückgibt, führen wir den Benutzer zuHelloWorld.jsp.
Der nächste Schritt ist das Erstellen eines web.xmlDatei, die ein Einstiegspunkt für jede Anforderung an Struts 2 ist. Der Einstiegspunkt der Struts2-Anwendung ist ein Filter, der im Deployment Descriptor (web.xml) definiert ist. Daher definieren wir einen Eintrag der Klasse org.apache.struts2.dispatcher.FilterDispatcher in web.xml. Die Datei web.xml muss im Ordner WEB-INF unter WebContent erstellt werden. Eclipse hat bereits beim Erstellen des Projekts eine Skelett-Datei web.xml für Sie erstellt. Ändern wir es also einfach wie folgt:
<?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>
Wir haben index.jsp als unsere Begrüßungsdatei angegeben. Dann haben wir den Struts2-Filter so konfiguriert, dass er auf allen URLs ausgeführt wird (dh auf jeder URL, die dem Muster / * entspricht).
So aktivieren Sie das detaillierte Protokoll
Sie können die vollständige Protokollierungsfunktion während der Arbeit mit Struts 2 durch Erstellen aktivieren logging.properties Datei unter WEB-INF/classesMappe. Behalten Sie die folgenden zwei Zeilen in Ihrer Eigenschaftendatei bei -
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = \
java.util.logging.ConsoleHandler
Die Standardeinstellung logging.properties gibt einen ConsoleHandler zum Weiterleiten der Protokollierung an stdout sowie einen FileHandler an. Der Schwellenwert für die Protokollstufe eines Handlers kann mit SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST oder ALL festgelegt werden.
Das ist es. Wir sind bereit, unsere Hello World-Anwendung mit dem Struts 2-Framework auszuführen.
Vorgehensweise zum Ausführen der Anwendung
Klicken Sie mit der rechten Maustaste auf den Projektnamen und klicken Sie auf Export > WAR File um 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 zuzugreifen http://localhost:8080/HelloWorldStruts2/index.jsp. Dies gibt Ihnen folgenden Bildschirm -
Geben Sie einen Wert "Struts2" ein und senden Sie die Seite. Sie sollten die nächste Seite sehen
Beachten Sie, dass Sie definieren können index als Aktion in der Datei struts.xml und in diesem Fall können Sie die Indexseite als aufrufen http://localhost:8080/HelloWorldStruts2/index.action. Überprüfen Sie unten, wie Sie den Index als Aktion definieren können.
<?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 = "index">
<result >/index.jsp</result>
</action>
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success">/HelloWorld.jsp</result>
</action>
</package>
</struts>