
The Apache Struts web framework è una soluzione open-source gratuita per la creazione di applicazioni web in Java.
Le applicazioni web differiscono dai siti web convenzionali perché possono generare una risposta dinamica. Molti siti web distribuiscono solo pagine statiche. Un'applicazione web può interagire con database e motori di logica di business per personalizzare una risposta.
Le applicazioni web basate su JavaServer Pages a volte mescolano codice di database, codice di progettazione delle pagine e codice di controllo del flusso. Nella pratica, scopriamo che, a meno che questi aspetti non vengano separati, le applicazioni più grandi diventano difficili da mantenere.
Un modo per separare gli aspetti in un'applicazione software è utilizzare un'architettura Model-View-Controller (MVC). Il Model rappresenta il codice di business o di database, la View rappresenta il codice di progettazione delle pagine e il Controller rappresenta il codice di navigazione. Il framework Struts è progettato per aiutare gli sviluppatori a creare applicazioni web che utilizzano un'architettura MVC.
Il framework fornisce tre componenti chiave:
Un handler di "richiesta" fornito dallo sviluppatore dell'applicazione e mappato a un URI standard. Un handler di "risposta" che trasferisce il controllo a un'altra risorsa che completa la risposta. Una libreria di tag che aiuta gli sviluppatori a creare applicazioni interattive basate su moduli con pagine server. L'architettura e i tag del framework sono conformi ai termini di moda. Struts funziona bene con le applicazioni REST convenzionali e con tecnologie come SOAP e AJAX.
The Apache Struts Project è la comunità open source che crea e mantiene il framework Apache Struts. Il progetto è composto da un gruppo eterogeneo di volontari che condividono valori comuni riguardo allo sviluppo open source collaborativo e basato sulla comunità. The Apache Struts Project è orgoglioso di condividere questi valori con la nostra organizzazione madre: The Apache Software Foundation.
Il progetto si chiama "Struts" perché il framework ha lo scopo di fornire le "fondamenta invisibili" che supportano lo sviluppo professionale di applicazioni. Struts fornisce la colla che unisce i vari elementi della piattaforma Java standard in un insieme coerente. Il nostro obiettivo è sfruttare gli standard esistenti producendo i pezzi mancanti di cui abbiamo bisogno per creare applicazioni di livello enterprise facili da mantenere nel tempo.
The Apache Struts Project ha offerto due versioni principali del framework Struts. Attualmente manteniamo solo la versione Struts 2. Si raccomanda di aggiornare tutte le applicazioni Struts 1.x a Struts 2. Non iniziate lo sviluppo di nuove applicazioni con Struts 1.x, poiché non emettiamo più patch di sicurezza.
Struts 2 era originariamente noto come WebWork 2. Dopo aver lavorato in modo indipendente per diversi anni, le comunità di WebWork e Struts hanno unito le forze per creare Struts 2. Il framework 2.x è la scelta migliore per i team che apprezzano soluzioni eleganti a problemi difficili.
Apache Struts è un framework web moderno, mantenuto e completo. È presente da anni e, data l'enorme base di utenti, è improbabile che sparisca presto. Non solo: abbiamo utenti e sviluppatori dedicati al progetto. Apache Struts è concesso in licenza sotto Apache License 2.0 e questo non cambierà. Manteniamo una proprietà intellettuale pulita e siete "al sicuro" nell'usare il progetto. A volte non siete "al sicuro" nell'usare un progetto quando un'azienda controlla il SCM. L'accesso al codice sorgente non significa che sia gratuito. Con Apache Struts, non siete solo liberi di "farne ciò che volete", ma potete anche contribuire (cosa che non sempre accade). E la parte migliore: potete diventare parte del team principale.
Di solito è molto facile integrare altre tecnologie con Apache Struts. Se usate un ORM come Apache Cayenne, Hibernate o JDBC, non avrete alcuna restrizione. Apache Struts non è nemmeno troppo legato a una tecnologia frontend. Un tempo era JSP, poi sono arrivati Velocity e Freemarker. Oggigiorno potreste costruire la vostra applicazione web con semplice HTML statico e AngularJS. Oppure potreste voler usare Sitemesh o Tiles. Tutto ciò non è un problema grazie ai meccanismi di estensione eleganti e facili da usare di Struts.
A differenza di altri framework orientati ai componenti, non miriamo a nascondere la natura stateless del web. Riteniamo perfettamente accettabile costruire su un ciclo Request/Response. Pensiamo anche che il pattern MVC non sia poi così male, solo perché è vecchio. In effetti, crediamo che l'architettura di Apache Struts sia pulita e facile da capire.
Naturalmente, se desiderate costruire componenti lato server che vengono renderizzati lato frontend, probabilmente con Struts siete nel posto sbagliato. Questo è un approccio diverso che promette di ridurre la quantità di conoscenza di HTML/JavaScript necessaria e di creare componenti riutilizzabili per il layer di view. Progetti come Wicket e Tapestry servono molto bene a questo scopo. Come per ogni framework, dovete decidere se ha senso per voi costruire componenti o se siete meglio con l'approccio Struts.