Struts 2 - Resultados y tipos de resultados

Como se mencionó anteriormente, el <results> etiqueta juega el papel de un viewen el marco Struts2 MVC. La acción se encarga de ejecutar la lógica empresarial. El siguiente paso después de ejecutar la lógica empresarial es mostrar la vista utilizando el<results> etiqueta.

A menudo, hay algunas reglas de navegación adjuntas a los resultados. Por ejemplo, si el método de acción es autenticar a un usuario, hay tres posibles resultados.

  • Acceso exitoso
  • Inicio de sesión fallido: nombre de usuario o contraseña incorrectos
  • Cuenta bloqueada

En este escenario, el método de acción se configurará con tres posibles cadenas de resultados y tres vistas diferentes para representar el resultado. Ya lo hemos visto en los ejemplos anteriores.

Pero Struts2 no lo vincula con el uso de JSP como tecnología de visualización. Después de todo, el propósito del paradigma MVC es mantener las capas separadas y altamente configurables. Por ejemplo, para un cliente Web2.0, es posible que desee devolver XML o JSON como salida. En este caso, puede crear un nuevo tipo de resultado para XML o JSON y lograrlo.

Struts viene con una serie de result types y todo lo que ya hemos visto que era el tipo de resultado predeterminado dispatcher, que se utiliza para enviar a páginas JSP. Struts le permite utilizar otros lenguajes de marcado para que la tecnología de visualización presente los resultados y las opciones populares incluyenVelocity, Freemaker, XSLT y Tiles.

El tipo de resultado del despachador

los dispatcherel tipo de resultado es el tipo predeterminado y se utiliza si no se especifica ningún otro tipo de resultado. Se utiliza para reenviar a un servlet, JSP, página HTML, etc., en el servidor. Utiliza el método RequestDispatcher.forward () .

Vimos la versión "abreviada" en nuestros ejemplos anteriores, donde proporcionamos una ruta JSP como el cuerpo de la etiqueta de resultado.

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

También podemos especificar el archivo JSP usando una etiqueta <param name = "location"> dentro del elemento <result ...> de la siguiente manera:

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

También podemos suministrar un parseparámetro, que es verdadero por defecto. El parámetro de análisis determina si el parámetro de ubicación se analizará o no para las expresiones OGNL.

El tipo de resultado de FreeMaker

En este ejemplo, veremos cómo podemos usar FreeMakercomo la tecnología de visualización. Freemaker es un motor de plantillas popular que se utiliza para generar resultados utilizando plantillas predefinidas. Creemos ahora un archivo de plantilla de Freemaker llamadohello.fm con los siguientes contenidos -

Hello World ${name}

El archivo de arriba es una plantilla donde namees un parámetro que se pasará desde el exterior mediante la acción definida. Conservará este archivo en su CLASSPATH.

A continuación, modifiquemos el struts.xml para especificar el resultado de la siguiente manera:

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

Conservemos nuestros archivos HelloWorldAction.java, HelloWorldAction.jsp e index.jsp como los hemos creado en el capítulo de ejemplos.

Ahora haga clic derecho en el nombre del proyecto y haga clic en Export > WAR File para crear un archivo War.

Luego, implemente este WAR en el directorio de aplicaciones web de Tomcat. Finalmente, inicie el servidor Tomcat e intente acceder a la URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Esto producirá la siguiente pantalla.

Ingrese un valor "Struts2" y envíe la página. Debería ver la página siguiente.

Como puede ver, esto es exactamente igual que la vista JSP excepto que no estamos atados al uso de JSP como tecnología de vista. Hemos utilizado Freemaker en este ejemplo.

El tipo de resultado de redireccionamiento

los redirectEl tipo de resultado llama al método estándar response.sendRedirect () , lo que hace que el navegador cree una nueva solicitud a la ubicación dada.

Podemos proporcionar la ubicación en el cuerpo del elemento <result ...> o como un elemento <param name = "location">. Redirect también es compatible conparseparámetro. Aquí hay un ejemplo configurado usando XML:

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

Así que simplemente modifique su archivo struts.xml para definir el tipo de redireccionamiento como se mencionó anteriormente y cree un nuevo archivo NewWorld.jpg donde será redirigido siempre que la acción de saludo devuelva el éxito. Puede consultar el ejemplo de acción de redireccionamiento de Struts 2 para una mejor comprensión.