A Quick Struts 2 Intro

1. Introduzione

Apache Struts 2 è un framework basato su MVC per lo sviluppo di applicazioni Web Java aziendali. È una riscrittura completa del framework originale di Struts. Ha un'implementazione API open source e un ricco set di funzionalità.

In questo tutorial, avremo un'introduzione per principianti ai diversi componenti principali del framework Struts2. Inoltre, mostreremo come usarli.

2. Panoramica di Struts 2 Framework

Alcune delle caratteristiche di Struts 2 sono:

  • Azioni basate su POJO (semplici vecchi oggetti Java)
  • supporto plugin per REST, AJAX, Hibernate, Spring, ecc
  • convenzione sulla configurazione
  • supporto di varie tecnologie a livello di visualizzazione
  • facilità di profilazione e debug

2.1. Diversi componenti di Struts2

Struts2 è un framework basato su MVC, quindi i seguenti tre componenti saranno presenti in tutte le applicazioni Struts2:

  1. Classe di azione - che è una classe POJO (POJO significa che non fa parte di alcuna gerarchia di tipi e può essere utilizzata come classe indipendente); implementeremo la nostra logica aziendale qui
  2. Controller: in Struts2, i filtri HTTP vengono utilizzati come controller; fondamentalmente eseguono attività come intercettare e convalidare richieste / risposte
  3. Visualizza: viene utilizzato per presentare i dati elaborati; di solito è un file JSP

3. Progettare la nostra applicazione

Procediamo con lo sviluppo della nostra web app. È un'applicazione in cui un utente seleziona una particolare marca di auto e viene accolto da un messaggio personalizzato.

3.1. Dipendenze di Maven

Aggiungiamo le seguenti voci al pom.xml :

 org.apache.struts struts2-core 2.5.10   org.apache.struts struts2-junit-plugin 2.5.10   org.apache.struts struts2-convention-plugin 2.5.10 

L'ultima versione delle dipendenze può essere trovata qui.

3.2. Logica di business

Creiamo una classe di azione CarAction che restituisce un messaggio per un particolare valore di input. Il CarAction ha due campi - carName (utilizzato per memorizzare l'input da parte dell'utente) e carMessage (utilizzato per la memorizzazione del messaggio personalizzato da visualizzare):

public class CarAction { private String carName; private String carMessage; private CarMessageService carMessageService = new CarMessageService(); public String execute() { this.setCarMessage(this.carMessageService.getMessage(carName)); return "success"; } // getters and setters }

La classe CarAction utilizza CarMessageService che fornisce il messaggio personalizzato per un marchio automobilistico :

public class CarMessageService { public String getMessage(String carName) { if (carName.equalsIgnoreCase("ferrari")){ return "Ferrari Fan!"; } else if (carName.equalsIgnoreCase("bmw")){ return "BMW Fan!"; } else { return "please choose ferrari Or bmw"; } } }

3.3. Accettazione dell'input dell'utente

Aggiungiamo un JSP che è un punto di ingresso nella nostra applicazione. Questo è un contenuto del file input.jsp :

Welcome to Baeldung Struts 2 app

Which car do you like !!

Please choose ferrari or bmw

Il tag < form > specifica l'azione (nel nostro caso è un URI HTTP a cui deve essere inviata la richiesta GET).

3.4. La parte controller

StrutsPrepareAndExecuteFilter è il controller, che intercetterà tutte le richieste in arrivo. Dobbiamo registrare il seguente filtro nel web.xml:

 struts2 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter   struts2 /* 

StrutsPrepareAndExecuteFilter filtrerà ogni richiesta in arrivo poiché stiamo specificando il carattere jolly di corrispondenza URL / *

3.5. Configurazione dell'applicazione

Aggiungiamo le seguenti annotazioni alla nostra classe di azioni Car :

@Namespace("/tutorial") @Action("/car") @Result(name = "success", location = "/result.jsp")

Comprendiamo la logica di queste annotazioni. Lo spazio dei nomi @ viene utilizzato per la separazione logica dell'URI della richiesta per diverse classi di azioni; dobbiamo includere questo valore nella nostra richiesta.

Inoltre, @Action indica il punto finale effettivo dell'URI della richiesta che raggiungerà la nostra classe Action . La classe di azione consulta CarMessageService e inizializza il valore di un'altra variabile membro carMessage . Dopo che il metodo execute () ha restituito un valore, "successo" nel nostro caso, corrisponde a quel valore per invocare result.jsp

Infine, @Result ha due parametri. Il primo, name, specifica il valore che restituirà la nostra classe Action ; questo valore viene restituito dal metodo execute () della classe Action . Questo è il nome del metodo predefinito che verrà eseguito .

La seconda parte, location, dice a quale file fare riferimento dopo che il metodo execute () ha restituito un valore. Qui, stiamo specificando che quando execute () restituisce una stringa con valore " success ", dobbiamo inoltrare la richiesta a result.jsp .

La stessa configurazione può essere ottenuta fornendo un file di configurazione XML:

   /result.jsp   

3.6. La vista

Questo è il contenuto di result.jsp che verrà utilizzato per presentare il messaggio all'utente:

Hello Baeldung User

You are a

Ci sono due cose importanti da notare qui:

  • instiamo importando la libreria struts-tags
  • instiamo usando la libreria struts -tags per stampare il valore di una proprietà carMessage

4. Esecuzione dell'applicazione

Questa app Web può essere eseguita in qualsiasi contenitore Web, ad esempio in Apache Tomcat. Questi sono i passaggi necessari per realizzarlo:

  1. Dopo aver distribuito l'app Web, apri il browser e accedi al seguente URL: //www.localhost.com:8080/MyStrutsApp/input.jsp
  2. Seleziona una delle due opzioni e invia la richiesta
  3. Verrai reindirizzato alla pagina result.jsp con un messaggio personalizzato basato sull'opzione di input selezionata

5. conclusione

In questo tutorial, abbiamo esaminato una guida passo passo su come creare la nostra prima applicazione web Struts2. Abbiamo coperto diversi aspetti relativi a MVC nel dominio Struts2 e abbiamo mostrato come metterli insieme per lo sviluppo.

Come sempre, questo tutorial può essere trovato su Github come progetto Maven.