Struts - Overview, Installazione e Setup

23
Slides © Marty Hall, http://www.coreservlets.com, books © Sun Microsystems Press Jakarta Struts: Un framework MVC Overview, Installazione e Setup. Struts versione 1.2 . Core Servlets & JSP book: www.coreservlets.com More Servlets & JSP book: www.moreservlets.com Servlet/JSP/Struts/JSF Training: courses.coreservlets.com Traduzione a cura di JavaStaff.com

Transcript of Struts - Overview, Installazione e Setup

Page 1: Struts - Overview, Installazione e Setup

Slides © Marty Hall, http://www.coreservlets.com, books © Sun Microsystems Press

Jakarta Struts:Un framework MVCOverview, Installazione e Setup.

Struts versione 1.2 .Core Servlets & JSP book: www.coreservlets.comMore Servlets & JSP book: www.moreservlets.com

Servlet/JSP/Struts/JSF Training: courses.coreservlets.comTraduzione a cura di JavaStaff.com

Page 2: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup2 www.coreservlets.com

Agenda

• Capire Struts– Differenti punti di vista di Struts– Vantaggi di Struts– Svantaggi di Struts

• Setup di Struts– Scaricare e configurare Struts 1.2– Testare Struts– Effettuare il setup di applicationi Struts– Accedere alla documentazione di Struts– Aggiungere Struts ad una Web application esistente

Page 3: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup3 www.coreservlets.com

Cosa è Apache Struts?

• Un framework MVC?– Struts fornisce un framework unificato per il deploy di

applicazioni JSP/Servlet che usano l’architettura MVC. • Una collezione di utilities?

– Struts fornisce classi d’utilità per gestire la maggior parte dei compiti nello sviluppo di applicazioni Web

• Un insieme di librerie JSP Custom Tag?– Struts fornisce delle librerie custom tag per gestire le

proprietà dei bean, generare form HTML, iterare sui vari tipi di strutture dati e generare HTML.

• Come bisogna considerare Struts?– La risposta dipende dal modo in cui viene utilizzato, ma

un framework MVC è il miglior modo di definire Struts.

Page 4: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup4 www.coreservlets.com

• Configurazione centralizzata su file– Piuttosto che inserire le informazioni direttamente nei programmi

Java, molti valori di Struts sono rappresentati su file XML o properties. Questo basso accoppiamento permette di effettuare cambiamenti senza modificare o ricompilare il codice Java e la maggiorparte dei cambiamenti può essere fatto editando un singolo file. Questo approccio agli sviluppatori Java e Web di focalizzarsi su task differenti (implementare la business logic, presentare determinati valori ai clienti etc.) senza il bisogno di avere informazioni su tutto il sistema.

• Form beans– Nelle JSP, potete utilizzare la property="*" con jsp:setProperty per

popolare automaticamente un componente JavaBean basato sui parametri della request. Apache Struts estende questa possibilità al codice Java e aggiunge molte utilities le quali servono tutte a semplificare enormemente il processamento dei parametri della request.

• Bean tags– Apache Struts fornisce una serie di tag custom JSP (bean:write, in

particolare) che permette di fare l’output delle proprietà dei componenti JavaBeans. Queste sono semplicemente delle modifice più potenti dei standard tag jsp:useBean e jsp:getProperty.

Vantaggi di Struts

Page 5: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup5 www.coreservlets.com

Vantaggi di Struts/2

• Tag HTML– Apache Struts fornisce un insieme di custom JSP tag per creare form

HTML che sono associate con componenti JavaBeans. Questa associazione bean/form association è utile per due scopi:

• Ti permette di avere valori di default di una form da oggetti Java.

• Ti permette di visualizzare nuovamente delle form con tutti (o qualcuno, dipende da come viene utilizzato) i valori inseriti prcedentemente.

• Validazione dei campi della form– Apache Struts ha la possibilità di controllare che i valori di una form

siano nel formato richiesto. Se i valori mancano o sono in un formato sbagliato, la form può essere rivisualizzata automaticamente con i messaggi d’errore e con i valori precedentemente inseriti.

• Questa validazione può essere effettuata lato server (in Java) o sia sul server che sul client (in JavaScript).

• Approccio MVC– Struts incoraggia l’uso coerente di MVC nella vostra applicazione.

Page 6: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup6 www.coreservlets.com

Svantaggi of Struts

• Alta curva di apprendimento– Per utilizzare l’MVC con il classico RequestDispatcher,

dovete conoscere bene JSP e Servlet. Per utilizzare l’MVC con Struts, dovete conoscere JSP, Servlet ed un framework abbastanza grande. Questo sforzo in più viene pesato ancora di più nei progetti piccoli, vicino alle consegne e con sviluppatori poco esperti; potete spendere lo stesso tempo ad imparare Struts che a costruire la vostra applicazione.

• Peggiore documentazione– Rispetto alle API di JSP e Servlet, Struts ha meno risorse

online e molti utenti alle prime armi trovano molto confusionaria la documentazione di Apache. Ci sono meno libri su Apache Struts che su JSP e Servlet.

Page 7: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup7 www.coreservlets.com

Svantaggi di Struts/2

• Meno trasparente– Con le applicazioni Struts, ci sonomolte cose che

funzionano dietro le scene rispetto ad una normale applicazione Web Java. Come risultato, le applicazioni Struts sono:

• Più difficili da capire• Più difficili da testare ed ottimizzare

• Approccio rigido– Struts incoraggia l’uso di MVC ma rendere difficile

qualsiasi altro approccio.

Page 8: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup8 www.coreservlets.com

Vantaggi di JSF (rispetto a Struts)

• Componenti custom– JSF permette in maniera relativamente semplice di

combinare GUI complesse in un singolo componente che può essere gestito; Struts invece no

• Supporto per altre tecnologie– JSF non è limitato ad HTML e HTTP; Struts lo è

• Accesso ai bean tramite il nome– JSF permette di assegnare un nome ai bean, per

referenziarli nelle form. Struts a un processo complesso con diversi livelli di indirezione dove c’è bisogno di ricordarsi quale form è l’input per quale azione.

• Expression language– L’expression language di JSF è più conciso e potente del

tag di Struts bean:write.

Page 9: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup9 www.coreservlets.com

Vantaggi di JSF (rispetto a Struts)/2

• Definizione più semplice del controller e dei bean– JSF non richiede che il controller e i bean estendano

particolari classi o che usino particolari metodi. Struts invece si.

• File di configurazione e struttura più semplice– Il file faces-config.xml è molto più semplice da utilizzare

rispetto a struts-config.xml. In generale, JSF è più semplice.

• Più tool di supporto– L’orientamento verso i controlli GUI e I loro handler apre

possibilità verso IDE drag-and-drop

Page 10: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup10 www.coreservlets.com

Svantaggi di JSF (rispetto a Struts)

• Standard tra sviluppatori– Struts è affermato per un gran numero di sviluppatori e IT manager;

JSF no.• Supporto per altre tecnologie

– JSF non è limitato all’HTML e HTTP; Struts invece si• Hey! Non avevo detto che era un vantaggio di JSF?

• Confusione nei nomi dei file– Le pagine utilizzate in JSF finiscono per .jsp. Ma gli URL finiscono

per .faces or .jsf. Questo causa diversi problemi; in particolare in JSF

• Non è possibile effettuare il browsing di directory e cliccare sui link

• E’ difficile proteggere le pagine JSP dall’accesso• E’ difficile riferirsi a pagine non JSF nel faces-config.xml

• Approccio Self-submit– Con Struts, la form (blah.jsp) e l’handler (blah.do) hanno URL

differenti; con JSF sono gli stessi. Molti sviluppatori lo trovano strano.

Page 11: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup11 www.coreservlets.com

Svantaggi di JSF (rispetto a Struts)/2

• Meno supporto nei tool attuali– Struts è supportato da molti IDE; JSF non ancora

• Niente di equivalente alle Tiles– Struts ha una potente gestione del; JSF no

• Ma potete estrarre le Tiles da Struts e utilizzarle con JSF• Validazione più debole

– Struts ha dei validatori per gli indirizzi email, carte di credito, espressioni regolari e molto altro. JSF ha solo dei validatori per i valori che mancano, la lunghezza dell’input e i numeri in un certo range.

• Ma MyFaces ha diversi potenti validatori• E’ possibile utilizzare Struts/Commons validation library con

JSF• Mancanza di validazione lato client

– Struts supporta la validazione JavaScript-based; JSF no• Installazione peggiore

– Struts ha l’applicazione the struts-blank da utilizzare come punto di partenza; JSF non ha niente di simile

Page 12: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup12 www.coreservlets.com

Scaricare e configurare Struts

• Scaricare il file zip di Struts– Andate su http://jakarta.apache.org/site/binindex.cgi, o seguite il

link da http://jakarta.apache.org/struts/. • Decomprimete dentro una directory qualsiasi

– Per esempio, unzippate dentro C:\jakarta-struts-1.2.4. Mi riferirò a questo indirizzo con struts_install_dir.

• Aggiornate il vostro CLASSPATH– Aggiungete struts_install_dir/lib/struts.jar al CLASSPATH

utilizzato dal vostro compilatore o IDE (non il vostro server). • Installate un parser XML

– Se avete il JDK 1.4 o Apache Tomcat, questo passo non è necessario, visto che è già presente un parser XML. Se usate il JDK 1.2 or 1.3 con un server diverso, dovete ottenere delle librerie per il parsing dell’XML. Ecco due buone risorse: • http://xml.apache.org/ • http://java.sun.com/xml/

Page 13: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup13 www.coreservlets.com

Testare Struts

• Installate struts-blank.war.– Installate la Web application da

struts_install_dir/webapps/struts-blank.war nel vostro server. Per esempio, con Apache Tomcat, copiate struts_install_dir/webapps/struts-blank.war in tomcat_install_dir/webapps/.

• Start o restart del server.– La maggiorparte dei server riconoscono le applicazioni

solo quando vengono avviati. • Accedete a http://localhost/struts-blank/.

– Questo URL presume che è avviato un server sul vostro pc e che sta utilizzando la porta 80. In generale, accedete a http://hostname:port/struts-blank/.

Page 14: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup14 www.coreservlets.com

Testare Struts (Risultati)

Page 15: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup15 www.coreservlets.com

Setup di applicazioni Struts

• Opzione 1 (Buona): Copiate/rinominate la directory struts-blank nella vostra directory di sviluppo.– Quanto testate la vostra installazione di Struts, avviate

l’applicazione struts-blank. Quando fate ciò, Tomcat e la maggiorparte dei server estraggono il file struts-blank.war nella directory struts-blank. Copiate quindi questa directory e rinominatela in quello che volete.

– Per esempio, se utilizzateTomcat e C:\Servlets+JSP è la directory che utilizzate per lo sviluppo, copiate la dirctory tomcat_install_dir/webapps/struts-blank in C:\Servlets+JSP, rinominatela in struts-test.

– Nota: il file index.jsp in struts-blank deve essere sostituito con la vostra versione.

Page 16: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup16 www.coreservlets.com

Setup di applicazioni Struts/2

• Opzione 2 (Buona): Estraete struts-blank.war nella vostra directory di sviluppo.– Se il vostro server non esplode automaticamente I file

WAR, anche se avviate l’applicazione struts-blank spiegata precedentemente, non avrete nessuna cartella con cui lavorare. Alcune persone preferiscono estrarre il file WAR da soli. Per fare ciò:

• Copiate struts_install_dir/webapps/struts-blank.war nella vostra directory di sviluppo.

• Create una nuova directory (chiamatela ad esempio struts-test). • Unzippate struts-blank.war in questa directory. Potete utilizzare

il comando jar -xvf o un programma zip standard come WinZip. • Quando volete testare la vostra applicazione, copiate la cartella

struts-test nella directory di autodeploy del vostro server– Ricordatevi di sostituire il file index.jsp che è dentro struts-blank

Page 17: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup17 www.coreservlets.com

Setup di applicazioni Struts/3

• Opzione 3 (Non buona): Renominare struts-blank e lasciarlo nella directory del server.– E’ comune lavorare direttamente nella directory di

deployment del server (e.g., tomcat_install_dir/webapps/struts-test). Tuttiava questo approccio di adatta poco alle applicazioni reali, rende più difficile testare i cambiamenti e non supporta il vostro vero server di deployment. Se non avete un buon sistema di deployment utilizzando il vostro IDE o script ant, potete semplicemente creare un collegamento (Windows) o un link simbolico (Unix/Linux) alla directory di autodeploy del vostro server e copiare l’applicazione ogni volta.

Page 18: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup18 www.coreservlets.com

Accedere alla documentazione di Struts

• Leggerla da una copia locale– Questo è il metodo più veloce, ma la documentazione può

diventare vecchia. Per leggere in locale la documentazione basta installare l’applicazione struts-documentation.war. Copiate il file struts_install_dir/webapps/struts-documentation.war in tomcat_install_dir/webapps, riavviate il server e andate con il browser sull’URL http://localhost/struts-documentation/.

• Leggerla dal sito di Apache– Questa opzione è più lenta, ma vi garantisce l’ultima

versione relativa alla documentazione. L’URL di riferimento è (per la versione 1.2.8) http://struts.apache.org/struts-doc-1.2.8/.

– La documentazione include FAQ, guide utente, tutorial e le API nel formato Javadoc.

Page 19: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup19 www.coreservlets.com

Aggiungere Struts ad un’applicazione esistente

• Copiate i file nella vostra Web app– Copiate i file JAR da struts-blank/WEB-INF/lib a

vostra_web_app/WEB-INF/lib. – Copiate i file TLD da struts-blank/WEB-INF a

vostra_web_app/WEB-INF. – Copiate struts-config.xml da struts-blank/WEB-INF a

vostra_web_app/WEB-INF. – Copiate il file properties dell’applicazione da struts-blank/WEB-

INF/classes/resources a your_web_app/WEB-INF/classes/resources. – Se pensate di utilizzare un validatore automatico (spiegato in lezioni

successive), copiate validation.xml e validator-rules.xml da struts-blank/WEB-INF a vostra_web_app/WEB-INF.

– Se pensate di utilizzare Tiles (spiegato in lezioni successive), copiate struts-tiles.xml da struts-blank/WEB-INF a vostra_web_app/WEB-INF.

• Aggiornare il file web.xml– Copiate le dichiarazioni del file struts-blank/WEB-INF/web.xml in

vostra_web_app/WEB-INF/web.xml. La cosa più importante è copiare le entry riguardanti servlet e servlet-mapping, che mappano il pattern *.do sulla servlet org.apache.struts.action.ActionServlet.

Page 20: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup20 www.coreservlets.com

Siti con Struts: Viaggi

Page 21: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup21 www.coreservlets.com

Siti con Struts: Governo

Page 22: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup22 www.coreservlets.com

Siti con Struts: Commerciali

Page 23: Struts - Overview, Installazione e Setup

Apache Struts: Overview, Installazione e Setup23 www.coreservlets.com

Sommario

• Struts è un framework MVC– Ed è anche una collezione di utilities e di librerie custom tag

• Struts ha dei vantaggi significativi, ma introduce anche una complessità– Bisogna comparare l’uso di Struts con il normale MVC

(specialmente con l’expression language di JSP 2.0)– Bisogna considerare anche altri framework, specialmente

JavaServer Faces (JSF).• Struts è molto usato• E’ possibile testarlo utilizzando l’applicazione di default

struts-blank.war• E’ possibile sviluppare copiando la directory struts-

blank– Non partire da niente; servono troppi cambiamenti nella tuaWeb app