Struts 2 - Annotazioni

Come accennato in precedenza, Struts fornisce due forme di configurazione. Il modo tradizionale è usare ilstruts.xmlfile per tutte le configurazioni. Finora ne abbiamo visti tanti esempi nel tutorial. L'altro modo per configurare Struts è utilizzare la funzione Annotazioni di Java 5. Usando le annotazioni sui montanti, possiamo ottenereZero Configuration.

Per iniziare a utilizzare le annotazioni nel tuo progetto, assicurati di aver incluso i seguenti file jar nel tuo file WebContent/WEB-INF/lib cartella -

  • 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

Vediamo ora come eliminare la configurazione disponibile in struts.xml file e sostituirlo con annotaions.

Per spiegare il concetto di annotazione in Struts2, dovremmo riconsiderare il nostro esempio di convalida spiegato nel capitolo Validazioni di Struts2 .

Qui, prenderemo un esempio di un Dipendente il cui nome, età verrebbero catturati utilizzando una semplice pagina e metteremo due convalide per assicurarci che ÜSER inserisca sempre un nome e l'età dovrebbe essere compresa tra 28 e 65 anni.

Cominciamo con la pagina JSP principale dell'esempio.

Crea pagina principale

Scriviamo il file JSP della pagina principale index.jsp, che viene utilizzato per raccogliere le informazioni relative ai dipendenti di cui sopra.

<%@ 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>

L'indice index.jsp utilizza i tag Struts, che non abbiamo ancora trattato ma li studieremo nei capitoli relativi ai tag. Ma per ora, supponi che il tag s: textfield stampi un campo di input e che s: submit stampi un pulsante di invio. Abbiamo utilizzato la proprietà label per ogni tag che crea l'etichetta per ogni tag.

Crea viste

Useremo il file JSP success.jsp che verrà richiamato nel caso in cui l'azione definita ritorni 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>

Crea azione

Questo è il luogo in cui viene utilizzata l'annotazione. Ridefiniamo la classe di azioneEmployee con annotazione, quindi aggiungi un metodo chiamato validate () come mostrato di seguito in Employee.javafile. Assicurati che la tua classe di azione estenda l'estensioneActionSupport class, altrimenti il ​​tuo metodo di validazione non verrà eseguito.

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;
   }
}

Abbiamo usato poche annotazioni in questo esempio. Fammi esaminare uno per uno -

  • Innanzitutto, abbiamo incluso il file Resultsannotazione. Un'annotazione dei risultati è una raccolta di risultati.

  • Sotto l'annotazione dei risultati, abbiamo due annotazioni dei risultati. Le annotazioni dei risultati hanno l'estensionenameche corrispondono al risultato del metodo di esecuzione. Contengono anche una posizione su quale vista dovrebbe essere offerta corrispondente al valore restituito da execute ()

  • La prossima annotazione è il file Actionannotazione. Viene utilizzato per decorare il metodo execute (). Il metodo Action accetta anche un valore che è l'URL su cui viene richiamata l'azione.

  • Infine, ne ho usati due validationannotazioni. Ho configurato il validatore di campo richiesto suname campo e il validatore dell'intervallo intero sul agecampo. Ho anche specificato un messaggio personalizzato per le convalide.

File di configurazione

Non ne abbiamo davvero bisogno struts.xml file di configurazione, quindi rimuoviamolo e controlliamo il contenuto di web.xml file -

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

Ora, fai clic con il pulsante destro del mouse sul nome del progetto e fai clic Export > WAR Fileper 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:

Ora non inserire le informazioni richieste, basta fare clic su Submitpulsante. Vedrai il seguente risultato:

Inserisci le informazioni richieste ma inserisci un campo Da sbagliato, diciamo il nome come "test" e l'età di 30 anni e infine fare clic su Submitpulsante. Vedrai il seguente risultato:

Tipi di annotazioni di Struts 2

Le applicazioni Struts 2 possono utilizzare le annotazioni Java 5 come alternativa alla configurazione delle proprietà XML e Java. Puoi controllare l'elenco delle annotazioni più importanti relative a diverse categorie -

Tipi di annotazioni di Struts 2 .