Struts 2 - Resultados e tipos de resultados

Como mencionado anteriormente, o <results> tag desempenha o papel de um viewna estrutura MVC do Struts2. A ação é responsável por executar a lógica de negócios. A próxima etapa após executar a lógica de negócios é exibir a visualização usando o<results> tag.

Freqüentemente, há algumas regras de navegação anexadas aos resultados. Por exemplo, se o método de ação é autenticar um usuário, existem três resultados possíveis.

  • Login realizado com sucesso
  • Login malsucedido - nome de usuário ou senha incorretos
  • Conta bloqueada

Neste cenário, o método de ação será configurado com três strings de resultados possíveis e três visualizações diferentes para renderizar o resultado. Já vimos isso nos exemplos anteriores.

Mas o Struts2 não obriga você a usar JSP como tecnologia de visualização. Afinal, todo o propósito do paradigma MVC é manter as camadas separadas e altamente configuráveis. Por exemplo, para um cliente Web2.0, você pode querer retornar XML ou JSON como saída. Nesse caso, você pode criar um novo tipo de resultado para XML ou JSON e conseguir isso.

O Struts vem com uma série de result types e tudo o que já vimos que era o tipo de resultado padrão dispatcher, que é usado para despachar para páginas JSP. Struts permite que você use outras linguagens de marcação para a tecnologia de visualização para apresentar os resultados e as escolhas populares incluemVelocity, Freemaker, XSLT e Tiles.

O tipo de resultado do despachante

o dispatchertipo de resultado é o tipo padrão e é usado se nenhum outro tipo de resultado for especificado. É usado para encaminhar para um servlet, JSP, página HTML e assim por diante, no servidor. Ele usa o método RequestDispatcher.forward () .

Vimos a versão "abreviada" em nossos exemplos anteriores, em que fornecemos um caminho JSP como o corpo da tag de resultado.

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

Também podemos especificar o arquivo JSP usando uma tag <param name = "location"> dentro do elemento <result ...> como segue -

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

Nós também podemos fornecer um parseparâmetro, que é verdadeiro por padrão. O parâmetro de análise determina se o parâmetro de localização será analisado ou não para expressões OGNL.

O tipo de resultado do FreeMaker

Neste exemplo, vamos ver como podemos usar FreeMakercomo a tecnologia de exibição. Freemaker é um mecanismo de modelagem popular que é usado para gerar saída usando modelos predefinidos. Vamos agora criar um arquivo de modelo do Freemaker chamadohello.fm com os seguintes conteúdos -

Hello World ${name}

O arquivo acima é um modelo onde nameé um parâmetro que será passado de fora usando a ação definida. Você manterá este arquivo em seu CLASSPATH.

A seguir, vamos modificar o struts.xml para especificar o resultado da seguinte forma -

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

Vamos manter nossos arquivos HelloWorldAction.java, HelloWorldAction.jsp e index.jsp como os criamos no capítulo de exemplos.

Agora clique com o botão direito no nome do projeto e clique Export > WAR File para criar um arquivo de guerra.

Em seguida, implante esse WAR no diretório webapps do Tomcat. Finalmente, inicie o servidor Tomcat e tente acessar o URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Isso produzirá a tela a seguir.

Insira um valor "Struts2" e envie a página. Você deve ver a próxima página.

Como você pode ver, é exatamente igual à visualização JSP, exceto que não estamos vinculados ao uso de JSP como a tecnologia de visualização. Usamos o Freemaker neste exemplo.

O tipo de resultado de redirecionamento

o redirecttipo de resultado chama o método padrão response.sendRedirect () , fazendo com que o navegador crie uma nova solicitação para o local fornecido.

Podemos fornecer a localização no corpo do elemento <result ...> ou como um elemento <param name = "location">. Redirect também suporta oparseparâmetro. Aqui está um exemplo 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>

Portanto, apenas modifique seu arquivo struts.xml para definir o tipo de redirecionamento como mencionado acima e crie um novo arquivo NewWorld.jpg para onde você será redirecionado sempre que a ação hello retornar com sucesso. Você pode verificar o exemplo de Ação de redirecionamento do Struts 2 para melhor compreensão.