Nelle prime lezioni abbiamo fornito una visone d'insieme del framework, che ci sarà utile per approfondire i concetti nel corso della guida. In questa lezione iniziamo a prendere confidenza con l'infrastruttura di Struts e ci cimentiamo con un primo, semplice, progetto.
Prima di iniziare con la configurazione della nostra prima applicazione, è utile ricordare che esistono due filoni di sviluppo del framework corrispondenti alle versioni 1 e 2 Struts. Tratteremo delle differenze tra le due versioni in seguito, per ora concentriamoci sulla prima, che sarà argomento predominante della guida. Per prima cosa quindi scarichiamo l'ultima release di Struts 1.
Struts è distribuito sia sotto forma di codice sorgente (source), sia tramite i "file binari" (full distribution). Scaricare il codice sorgente garantisce un maggior controllo sull'ambiente in cui si effettua la compilazione, ma non è adatto ai principianti. Se non si hanno particolari esigenze (come la modifica o l'inclusione di una classe java nella propria installazione), si può tranquillamente usare la distribuzione binaria.
Per i nostri esempi utilizziamo la "distribuzione binaria". Possiamo quindi cliccare sul link sotto Full Distribution.
Una volta estratto l'archivio, troviamo diverse cartelle. Il framework è composto da circa 300 classi Java, divise in otto package principali (il numero delle classi è approssimativo perché il framework subisce di continuo aggiunte e aggiustamenti).
Struttura di una semplice applicazione
Per esaminare la struttura delle cartelle di una semplice applicazione Struts possiamo servirci dei file .war
di esempio che troviamo nella cartella apps
dell'archivio estratto.
Questi esempi risultano parecchio interessanti soprattutto per chi inizia. Infatti, per entrare nella logica di Struts e applicare il ciclo di vita delle richieste, che abbiamo mostrato nella lezione precedente, è utile esaminare la struttura delle cartelle di un progetto.
Per farlo abbiamo diverse possibilità: possiamo ad esempio rinominare il file struts-blank-1.x.x.war
in ProvaStruts.war
ed effettuare il deploy su un container come Tomcat o JBoss.
Una alternativa ancora più semplice è quella di utilizzare un tool come Eclipse per effettuare le nostre prove e, siccome siamo nell'ambito di applicazioni JEE, scarichiamo Eclipse per sviluppatori JEE
Possiamo importare il progetto in Eclipse da menu File -> Import
e scegliendo il formato Web
Ogni applicazione Web J2EE al di sotto della cartella in cui viene installata (ad esempio webapp di Tomcat) rispetta una struttura simile a quella che troviamo anche nel nostro progetto su Eclipse:
WebContent (da considerarsi la 'root' dell'applicazione) | +-- WEB-INF | | | +-- src (contiene il codice delle nostre servlet) | | | +-- classes | | | +-- lib (qui ci sono le librerie del framework Struts) | | | +-- tags | +-- META-INF | +-- pages (contiene le JSP per le viste)
Alcuni di questi contenitori come WEB-INF
sono fissi, ma possiamo personalizzare le altre directory modificando il file di configurazione della nostra applicazione. Ricapitolando:
- WebContent è la root dell'applicazione. Qui possiamo inserire le nostre pagine dinamiche (le viste JSP) organizzate in cartelle e tutta la parte statica del sito come le pagine HTML, i fogli di stile e le immagini.
- WEB-INF contiene i sorgenti delle azioni e i file di configurazione xml
- lib contiene le librerie del framework e gli altri JAR utili all'applicazione. In generale, quando non abbiamo uno strumento automatico a farlo per noi, dobbiamo copiare la cartella
lib
che troviamo nell'archivio di Struts all'interno della nostra applicazione - classes: una cartella contenente le classi compilate dell'applicazione organizzate in cartelle corrispondenti alla struttura dei package