Apache Struts è un progetto open source sponsorizzato dalla Apache Software Foundation ed è un'implementazione Java server-side del design pattern MVC (Model View Controller).
Il progetto Struts è nato con l'intenzione di implementare un framework open-source per la creazione di applicazioni Web che permettesse la separazione del livello di presentazione e che fosse, allo stesso tempo, astratto dai vari livelli di dati e dalle transazioni.
Nato nel 2000 per opera di Craig R. McClanahan, la popolarità del framework è cresciuta enormemente nel corso degli ultimi anni. Dopo il rilascio di Struts 1.1, nel giugno 2003, Struts è diventato uno degli scenari più importanti per lo sviluppo di complesse applicazioni web basate su JSP.
Nel 2008 nasce Struts 2, che si differenzia parecchio dalla prima versione: questa release non segue infatti il progetto originale, ma è una evoluzione di WebWork, il framework open source, parte del progetto OpenSymphony. Per questo motivo la migrazione tra la versione 1 e la versione 2 non è semplice. In questa guida ci occuperemo della versione 1 del progetto e analizzeremo la versione 2 per differenze con la prima.
Perché usare Struts
Questo framework semplifica notevolmente la vita di un programmatore, sia in fase di sviluppo, che di revisione e di configurazione delle proprie applicazioni.
L'utilizzo di Struts supporta vantaggi significativi in termini del progetto:
- Modularità e Riusabilità: i diversi ruoli dell'applicazione sono affidati a diversi componenti. Ció consente di sviluppare codice modulare e più facilmente riutilizzabile
- Manutenibilità: l'applicazione è costituita da livelli logici ben distinti. Una modifica in uno dei livelli non comporta modifiche negli altri
- Rapidità di sviluppo: è possibile sviluppare in parallelo le varie parti dell'applicazione, logica di business e di view
Il design pattern MVC
Iniziamo esaminando le 3 componenti alla base del design pattern MVC:
Componente | Descrizione |
---|---|
Model | Rappresenta i dati, tipicamente persistenti su database, attraverso oggetti, questa rappresentazione ci permette di manipolare e il modello dei dati in modo semplificato |
View | È lo strato più esterno, quello di presentazione. È qui che definiamo l'interfaccia utente, forniamo una rappresentazione del modello dei dati e riceviamo richieste dall'esterno. |
Controller | È il componente che contiene la logica di business. Qui gestiamo le interazioni con l'interfaccia, istradiamo le richieste, preleviamo i dati dal Model e stabiliamo quale View dovrà rappresentarli e come. |
Questo approccio si preoccupa di separare la responsabilità nelle web application. Una richiesta client viene intercettata dal Controller, attraverso il Model vengono forniti tutti i metodi per accedere ai dati dell'applicazione e quindi per elaborare la risposta e visualizzarla attraverso i componenti View.
Il componente più importante è quindi il Controller ed è la parte fondamentale del framework. La potenza di questo sistema sta, infatti, nella possibilità di scegliere diverse tecnologie per implementare le classi del Model (dal più comune dei DAO a ORM di vario genere come Hibernate) e il View Engine che si preferisce (JSP, Velocity, etc.).
Nel corso della guida analizzeremo i principali componenti di un'applicazione basata su Struts suddividendoli in componenti model, view e controller; poi passeremo alla configurazione di un applicazione web, descriveremo le funzionalità più importanti offerte da questo framework e infine analizzeremo i concetti principali della nuova versione del progetto.