Struts 2 - Risultati e tipi di risultati

Come accennato in precedenza, il <results> tag interpreta il ruolo di un viewnel framework Struts2 MVC. L'azione è responsabile dell'esecuzione della logica di business. Il passaggio successivo dopo l'esecuzione della logica di business consiste nel visualizzare la vista utilizzando il<results> etichetta.

Spesso ci sono alcune regole di navigazione allegate ai risultati. Ad esempio, se il metodo di azione è autenticare un utente, ci sono tre possibili risultati.

  • Login effettuato con successo
  • Accesso non riuscito: nome utente o password errati
  • Account bloccato

In questo scenario, il metodo di azione verrà configurato con tre possibili stringhe di risultati e tre diverse visualizzazioni per eseguire il rendering del risultato. Lo abbiamo già visto negli esempi precedenti.

Ma Struts2 non ti lega all'uso di JSP come tecnologia di visualizzazione. Dopotutto, l'intero scopo del paradigma MVC è mantenere i livelli separati e altamente configurabili. Ad esempio, per un client Web2.0, potresti voler restituire XML o JSON come output. In questo caso, potresti creare un nuovo tipo di risultato per XML o JSON e ottenere questo risultato.

Struts viene fornito con una serie di file predefiniti result types e tutto ciò che abbiamo già visto era il tipo di risultato predefinito dispatcher, che viene utilizzato per inviare a pagine JSP. Struts ti consente di utilizzare altri linguaggi di markup per la tecnologia di visualizzazione per presentare i risultati e le scelte popolari includonoVelocity, Freemaker, XSLT e Tiles.

Il tipo di risultato del Dispatcher

Il dispatcheril tipo di risultato è il tipo predefinito e viene utilizzato se non viene specificato nessun altro tipo di risultato. Viene utilizzato per inoltrare a un servlet, JSP, pagina HTML e così via sul server. Utilizza il metodo RequestDispatcher.forward () .

Abbiamo visto la versione "abbreviata" nei nostri esempi precedenti, in cui abbiamo fornito un percorso JSP come corpo del tag del risultato.

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

Possiamo anche specificare il file JSP utilizzando un tag <param name = "location"> all'interno dell'elemento <risultato ...> come segue:

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

Possiamo anche fornire un file parseparametro, che è vero per impostazione predefinita. Il parametro parse determina se il parametro location verrà analizzato o meno per le espressioni OGNL.

Il tipo di risultato di FreeMaker

In questo esempio, vedremo come possiamo usare FreeMakercome la tecnologia di visualizzazione. Freemaker è un popolare motore di creazione di modelli utilizzato per generare output utilizzando modelli predefiniti. Creiamo ora un file modello Freemaker chiamatohello.fm con i seguenti contenuti -

Hello World ${name}

Il file sopra è un modello in cui nameè un parametro che verrà passato dall'esterno utilizzando l'azione definita. Manterrai questo file nel tuo CLASSPATH.

Successivamente, modifichiamo il file struts.xml per specificare il risultato come segue -

<?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>

Conserviamo i nostri file HelloWorldAction.java, HelloWorldAction.jsp e index.jsp come li abbiamo creati nel capitolo degli esempi.

Ora fai clic con il pulsante destro del mouse sul nome del progetto e fai clic Export > WAR File per creare un file War.

Quindi distribuire questo WAR nella directory webapps di Tomcat. Infine, avvia il server Tomcat e prova ad accedere all'URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Questo produrrà la seguente schermata.

Immettere un valore "Struts2" e inviare la pagina. Dovresti vedere la pagina successiva.

Come puoi vedere, questo è esattamente lo stesso della vista JSP tranne per il fatto che non siamo legati all'uso di JSP come tecnologia di visualizzazione. Abbiamo usato Freemaker in questo esempio.

Il tipo di risultato di reindirizzamento

Il redirectil tipo di risultato chiama il metodo response.sendRedirect () standard , facendo in modo che il browser crei una nuova richiesta nella posizione specificata.

Possiamo fornire la posizione sia nel corpo dell'elemento <risultato ...> che come elemento <param name = "location">. Redirect supporta anche ilparseparametro. Ecco un esempio configurato utilizzando XML:

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

Quindi modifica il tuo file struts.xml per definire il tipo di reindirizzamento come menzionato sopra e crea un nuovo file NewWorld.jpg dove sarai reindirizzato ogni volta che l'azione ciao avrà successo. Puoi controllare l' esempio di azione di reindirizzamento di Struts 2 per una migliore comprensione.