Streben 2 - Ergebnisse und Ergebnistypen

Wie bereits erwähnt, ist die <results> Tag spielt die Rolle eines viewim Struts2 MVC-Framework. Die Aktion ist für die Ausführung der Geschäftslogik verantwortlich. Der nächste Schritt nach dem Ausführen der Geschäftslogik besteht darin, die Ansicht mit dem anzuzeigen<results> Etikett.

Oft sind den Ergebnissen einige Navigationsregeln beigefügt. Wenn die Aktionsmethode beispielsweise darin besteht, einen Benutzer zu authentifizieren, gibt es drei mögliche Ergebnisse.

  • Erfolgreicher Login
  • Nicht erfolgreiche Anmeldung - Falscher Benutzername oder falsches Passwort
  • Konto gesperrt

In diesem Szenario wird die Aktionsmethode mit drei möglichen Ergebniszeichenfolgen und drei verschiedenen Ansichten konfiguriert, um das Ergebnis zu rendern. Wir haben dies bereits in den vorherigen Beispielen gesehen.

Struts2 ist jedoch nicht mit der Verwendung von JSP als Ansichtstechnologie verbunden. Schließlich besteht der gesamte Zweck des MVC-Paradigmas darin, die Ebenen getrennt und hochgradig konfigurierbar zu halten. Beispielsweise möchten Sie für einen Web2.0-Client möglicherweise XML oder JSON als Ausgabe zurückgeben. In diesem Fall können Sie einen neuen Ergebnistyp für XML oder JSON erstellen und dies erreichen.

Streben kommt mit einer Reihe von vordefinierten result types und was auch immer wir bereits gesehen haben, das war der Standardergebnis-Typ dispatcher, wird zum Versenden an JSP-Seiten verwendet. Mit Struts können Sie andere Markup-Sprachen für die Ansichtstechnologie verwenden, um die Ergebnisse zu präsentierenVelocity, Freemaker, XSLT und Tiles.

Der Dispatcher-Ergebnistyp

Das dispatcherDer Ergebnistyp ist der Standardtyp und wird verwendet, wenn kein anderer Ergebnistyp angegeben ist. Es wird verwendet, um an ein Servlet, eine JSP, eine HTML-Seite usw. auf dem Server weiterzuleiten. Es verwendet die Methode RequestDispatcher.forward () .

Wir haben die "Kurzschrift" -Version in unseren früheren Beispielen gesehen, in denen wir einen JSP-Pfad als Hauptteil des Ergebnis-Tags angegeben haben.

<result name = "success">
   /HelloWorld.jsp
</result>

Wir können die JSP-Datei auch mit einem <param name = "location"> -Tag im <result ...> -Element wie folgt angeben:

<result name = "success" type = "dispatcher">
   <param name = "location">
      /HelloWorld.jsp
   </param >
</result>

Wir können auch eine liefern parseParameter, der standardmäßig wahr ist. Der Analyseparameter bestimmt, ob der Standortparameter für OGNL-Ausdrücke analysiert wird oder nicht.

Der FreeMaker-Ergebnistyp

In diesem Beispiel werden wir sehen, wie wir verwenden können FreeMakerals die Ansichtstechnologie. Freemaker ist eine beliebte Vorlagen-Engine, mit der mithilfe vordefinierter Vorlagen Ausgaben generiert werden. Lassen Sie uns nun eine Freemaker-Vorlagendatei mit dem Namen erstellenhello.fm mit folgenden Inhalten -

Hello World ${name}

Die obige Datei ist eine Vorlage, in der nameist ein Parameter, der mit der definierten Aktion von außen übergeben wird. Sie behalten diese Datei in Ihrem CLASSPATH.

Als nächstes ändern wir die struts.xml um das Ergebnis wie folgt anzugeben -

<?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" type = "freemarker">
            <param name = "location">/hello.fm</param>
         </result>
      </action>
      
   </package>

</struts>

Lassen Sie uns unsere Dateien HelloWorldAction.java, HelloWorldAction.jsp und index.jsp so behalten, wie wir sie im Beispielkapitel erstellt haben.

Klicken Sie nun 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 zuzugreifenhttp://localhost:8080/HelloWorldStruts2/index.jsp. Dadurch wird der folgende Bildschirm angezeigt.

Geben Sie einen Wert "Struts2" ein und senden Sie die Seite. Sie sollten die nächste Seite sehen.

Wie Sie sehen können, entspricht dies genau der JSP-Ansicht, außer dass wir nicht an die Verwendung von JSP als Ansichtstechnologie gebunden sind. In diesem Beispiel haben wir Freemaker verwendet.

Der Redirect-Ergebnistyp

Das redirectDer Ergebnistyp ruft die Standardmethode response.sendRedirect () auf , wodurch der Browser eine neue Anforderung an den angegebenen Speicherort erstellt.

Wir können die Position entweder im Hauptteil des Elements <result ...> oder als <param name = "location"> -Element angeben. Redirect unterstützt auch dieparseParameter. Hier ist ein Beispiel, das mit XML konfiguriert wurde:

<action name = "hello" 
   class = "com.tutorialspoint.struts2.HelloWorldAction"
   method = "execute">
   <result name = "success" type = "redirect">
      <param name = "location">
         /NewWorld.jsp
      </param >
   </result>
</action>

Ändern Sie einfach Ihre struts.xml-Datei, um den Umleitungstyp wie oben erwähnt zu definieren, und erstellen Sie eine neue Datei NewWorld.jpg, in der Sie umgeleitet werden, wenn die Hallo-Aktion den Erfolg zurückgibt. Sie können das Beispiel Struts 2 Redirect Action zum besseren Verständnis überprüfen .