Struts 2 - Anotações

Conforme mencionado anteriormente, o Struts oferece duas formas de configuração. A maneira tradicional é usar ostruts.xmlarquivo para todas as configurações. Vimos tantos exemplos disso no tutorial até agora. A outra maneira de configurar o Struts é usando o recurso Java 5 Annotations. Usando as anotações do struts, podemos alcançarZero Configuration.

Para começar a usar anotações em seu projeto, certifique-se de incluir os seguintes arquivos jar em seu WebContent/WEB-INF/lib pasta -

  • struts2-convention-plugin-x.y.z.jar
  • asm-x.y.jar
  • antlr-x.y.z.jar
  • 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

Agora, vamos ver como você pode acabar com a configuração disponível no struts.xml arquivo e substituí-lo por anotações.

Para explicar o conceito de Anotação no Struts2, teríamos que reconsiderar nosso exemplo de validação explicado no capítulo Validações do Struts2 .

Aqui, vamos dar um exemplo de um Funcionário cujo nome e idade seriam capturados usando uma página simples e colocaremos duas validações para garantir que ÜSER sempre insira um nome e a idade deve estar entre 28 e 65 anos.

Vamos começar com a página JSP principal do exemplo.

Criar página principal

Vamos escrever o arquivo JSP da página principal index.jsp, que é usado para coletar informações relacionadas aos funcionários mencionadas acima.

<%@ 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>Employee Form</title>
   </head>

   <body>
      
      <s:form action = "empinfo" method = "post">
         <s:textfield name = "name" label = "Name" size = "20" />
         <s:textfield name = "age" label = "Age" size = "20" />
         <s:submit name = "submit" label = "Submit" align="center" />
      </s:form>

   </body>
</html>

O index.jsp faz uso da tag Struts, que ainda não cobrimos, mas vamos estudá-los em capítulos relacionados a tags. Mas, por enquanto, apenas suponha que a tag s: textfield imprima um campo de entrada e que s: submit imprima um botão de envio. Usamos a propriedade label para cada tag, que cria um rótulo para cada tag.

Criar Vistas

Usaremos arquivo JSP success.jsp que será invocado caso a ação definida retorne SUCCESS.

<%@ 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>Success</title>
   </head>
   
   <body>
      Employee Information is captured successfully.
   </body>
</html>

Criar ação

Este é o local onde a anotação é usada. Vamos redefinir a classe de açãoEmployee com anotação e, em seguida, adicione um método chamado validate () como mostrado abaixo em Employee.javaArquivo. Certifique-se de que sua classe de ação estende oActionSupport classe, caso contrário, seu método de validação não será executado.

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.validator.annotations.*;

@Results({
   @Result(name = "success", Location = "/success.jsp"),
   @Result(name = "input", Location = "/index.jsp")
})
public class Employee extends ActionSupport {
   private String name;
   private int age;

   @Action(value = "/empinfo")
   
   public String execute() {
      return SUCCESS;
   }

   @RequiredFieldValidator( message = "The name is required" )
   
   public String getName() {
      return name;
   }
   
   public void setName(String name) {
      this.name = name;
   }

   @IntRangeFieldValidator(message = "Age must be in between 28 and 65", min = "29", max = "65")
   
   public int getAge() {
      return age;
   }
   
   public void setAge(int age) {
      this.age = age;
   }
}

Usamos algumas anotações neste exemplo. Deixe-me examiná-los um por um -

  • Primeiro, incluímos o Resultsanotação. Uma anotação de resultados é uma coleção de resultados.

  • Abaixo da anotação de resultados, temos duas anotações de resultados. As anotações de resultado têm onameque correspondem ao resultado do método de execução. Eles também contêm um local para qual visualização deve ser exibida, correspondendo ao valor de retorno de execute ()

  • A próxima anotação é o Actionanotação. Isso é usado para decorar o método execute (). O método Action também aceita um valor que é a URL na qual a ação é chamada.

  • Finalmente, usei dois validationanotações. Eu configurei o validador de campo obrigatório emname campo e o validador de intervalo inteiro no agecampo. Também especifiquei uma mensagem personalizada para as validações.

Arquivos de configuração

Nós realmente não precisamos struts.xml arquivo de configuração, vamos remover esse arquivo e verificar o conteúdo de web.xml arquivo -

<?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>
      
      <init-param>
         <param-name>struts.devMode</param-name>
         <param-value>true</param-value>
      </init-param>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

Agora, clique com o botão direito no nome do projeto e clique em Export > WAR Filepara 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 seguinte tela -

Agora não insira nenhuma informação necessária, basta clicar em Submitbotão. Você verá o seguinte resultado -

Insira as informações necessárias, mas insira um campo De errado, digamos que o nome seja "teste" e a idade 30 e, por fim, clique em Submitbotão. Você verá o seguinte resultado -

Tipos de anotações do Struts 2

Os aplicativos Struts 2 podem usar anotações Java 5 como alternativa à configuração de propriedades XML e Java. Você pode verificar a lista das anotações mais importantes relacionadas a diferentes categorias -

Tipos de anotações do Struts 2 .