Creare un'applicazione web usando Struts 2 e NetBeans

Lascia un commento

Requisiti:
IDE NetBeans, librerie di Apache Struts 2, libreria javassist, servlet container Tomcat o simili.

La guida che segue propone la creazione di una semplice applicazione web “HelloWorld” con il framework di Struts 2.
Anche se Struts 2 è uscito ormai da quasi quattro anni non tutti lo conoscono e in paricolare chi è abituato al vecchio Struts noterà non poche differenze molto significative. Ad esempio le actions, che prima erano componenti dello strato business, nel nuovo Struts fanno parte invece del model e inglobano al loro interno le variabili e i metodi getter/setter dei vecchi ActionBeans.
Per cominciare scarichiamo il file struts-2.2.1.1-lib.zip, che contiene tutte le librerie di Struts 2, da questo indirizzo:
http://it.apache.contactlab.it//struts/library/

Avviamo Netbeans e creiamo una Web Application senza integrare nessuno dei framework presenti. Dal menù: File -> New Project -> Java Web -> Web Application


Immagine nuovo progetto NetBeans

diamo un nome all’applicazione in Project Name


Immagine impostazione nome progetto

clicchiamo su next e scegliamo il server che vogliamo usare, ad esempio Apache Tomcat


Immagine impostazione server Tomcat

Per comodità io consiglierei di creare una cartella nella root del progetto che chiameremo my_libs in cui andremo a copiare le librerie essenziali di Struts 2:

sruts2-core.jar
xwork.jar
ognl.jar
freemarker.jar
commons-logging.jar
commons-fileupload.jar
commons-io.jar
commons-validator.jar
commons-chain.jar
commons-beanutils.jar

oltre alla libreria:

javassist.jar

che è possibile scaricare da questo link:

http://sourceforge.net/projects/jboss/files/Javassist/3.14.0.GA/javassist-3.14.0-GA.zip/download


Immagine cartella my_libs

Ora le librerie che abbiamo messo in my_libs vanno importate nel progetto, quindi clicchiamo col destro sul nome dell’applicazione e selezioniamo “Properties”. Nella finestra che compare scegliamo “Libreries” e clicchiamo sul tasto “Add JAR/Folder”.


Immagine add libreries

Ripercorriamo il percorcorso del file system fino ad arrivare alla nostra cartella my_libs, apriamola, selezioniamo tutte le librerie in essa contenute e diamo ok.


Immagine selezione librerie

Ora passiamo alla modifica della servlet che si occuperà di instradare le richieste verso Struts 2, ossia il web.xml. Esplodiamo il menu “Configuration Files” all’interno del nostro progetto quindi apriamo il file web.xml cliccandoci su due volte e scegliendo il tab “XML”.

Copiamo all’interno del file web.xml queste righe:


<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>TestApplication</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

e scriviamo in “display-name” il nome della nostra applicazione.

Creiamo il file struts.xml nel source package con questo contenuto:


<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts><!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
<action name="HelloWorld">
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>

Quindi creiamo il package “actions” nel Sources Package e al suo interno creiamo la classe HelloWorld.java al cui interno inseriamo questo codice:

package actions;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport {
private String message;
private String userName;
public HelloWorld() {
}
public String execute() {
setMessage("Benvenuto " + getUserName() + "!");
return SUCCESS;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}

Apriamo la index.jsp e copiamoci dentro questo codice:

<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<s:form action="HelloWorld" >
<s:textfield name="userName" label="Nome utente" />
<s:submit value="Invia"/>
</s:form>
</body>
</html>

Infine creiamo all’interno di “Web Pages” la pagina welcome.jsp con questo codice:

<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1><s:property value="message" /></h1>
</body>
</html>

Bene. Ora possiamo testare la nostra applicazione. Facciamo il build dell’applicazione e diamo il run.
Se tutto è andato liscio si aprirà la pagina con il form e al suo invio la pagina di benvenuto.


Immagine form utente


Immagine pagina benvenuto

La guida è stata creata integrando il tutorial:

struts-2-hello-world-example-1

Trasferimento blog

Lascia un commento

Prima che a qualcun altro balzi l’idea di creare un blog che si chiami appubunti.wordpress.org, l’ho fatto io, anche perchè chi lo deve fare se non colui il cui blog si chiama Appubunti? ;-)
Il mio attuale blog si è trasferito quindi su http://appubunti.wordpress.com o meglio è in fase di trasferimento, visto che ho deciso di tenerli entrambi attivi e l’uno fotocopia dell’altro, almeno fino a quando non risulterà visibile nei motori di ricerca anche il nuovo.
Vediamo un po’ quando ci metterà zio Google ad indicizzare anche quest’altro blog! :-P

Aggiungere un sistema nel grub 2

Lascia un commento

Sarà capitato sicuramente a molti di dover editare il bootloader di linux per poter avere la possibilità di scegliere, all’avvio del computer, quale sistema operativo avviare tra quelli installati. Quando era ancora presente il così detto grub1 era cosa abbastanza semplice. Bastava infatti modificare il file menu.lst, presente nella cartella /boot/grub, aggiungendo in coda gli altri sistemi operativi.
Con il nuovo grub le cose sono alquanto diverse. Possiamo subito notare che il file menu.lst è stato sostituito dal grub.cfg. Inoltre se apriamo il file grub.cfg:

# nano /boot/grub/grub.cfg

possiamo leggere all’inizio: “NON EDITARE QUESTO FILE. Esso è generato automaticamente da grub-mkconfig usando i templates presenti in /etc/grub.d e le impostazioni di /etc/default/grub”

Immagine del file grub.cfg

Allora come si fa per aggiungere un altro sistema operativo e renderlo disponibile all’avvio?
Nel messaggio di avvertenza abbiamo visto che ci sono due percorsi da cui grub attinge per le proprie impostazioni. Se andiamo nel primo troviamo una serie di files tra cui uno di nome 40_custom, e già il nome ci fa pensare che possa essere personalizzabile. Aprendolo possiamo leggere: “Questo file fornisce un semplice modo per aggiungere voci personalizzate nel menu (di grub). Scrivi semplicemente la voce che vuoi aggiungere dopo questo commento…”

Immagine del file 40_custom

Allora non ci resta che aggiungere il nostro sistema operativo così come ci viene suggerito.
Ecco un esempio in cui aggiungiamo alla lista dei sistemi una voce che permette di caricare Gentoo Linux:

menuentry "Gentoo Linux 2.6.34" {
set root=(hd0,2)
# oppure
# search --no-floppy --fs-uuid --set 370fa292-2495-4410-8d88-e5464b3b015a
linux /boot/kernel-2.6.34-gentoo-r1
}

Il comando menuentry alla prima riga identifica il nome del sistema operativo da visualizzare nel menù di grub visibile all’avvio.
Nella seconda riga non viene impostata la root del sistema, nonostante il nome della variabile. In realtà ,dopo aver fatto una serie di test, ho notato che “root” fa riferimento alla partizione /boot che contiene il kernel. In genere /boot è una sotto-cartella di / (root) ma non è necessariamente così.
Questo potrebbe essere vero per esempio per chi ha eseguito un’installazione automatica di Ubuntu, in quanto si troverebbe tutto su un’unica partizione, per esempio sda1 e indicherebbe root con hd0,1.
In questo caso specifico invece io ho suddiviso il sistema in più partizioni e ho /boot su sda2 e / (root) su sda3. La variabile root quindi farà riferimento alla partizione sda2, ossia la seconda partizione che contiene /boot.
Questa variabile comunque può essere omessa se si specifica l’UUID (Universally Unique Identifier) della partizione. La riga commentata, infatti, potrebbe prendere il posto della seconda e specificare come UUID, ovviamente, quello di sda2.
Per avere la lista completa degli UUID delle partizioni possiamo lanciare il comando:

# ls -l /dev/disk/by-uuid/

Per vedere invece quali parti del sistema montano le nostre partizioni usiamo il comando:

# df -h

mentre se ci interessa sapere solo l’UUID di una partizione specifica possiamo dare il comando:

# sudo blkid /dev/sdxy

dove x identifica il numero dell’hd a partire da 0 e y per il numero della partizione, che invece inizierà da 1, diversamente dal vecchio grub. Quindi “hd0,2″ sta per la seconda partizione del primo hard disk.

Per quanto riguarda Windows, se questo è già installato prima che venga aggiunto Ubuntu, non dovrebbe essere necessario aggiungerlo manualmente perchè è lo script 30_os_prober a rintracciarlo e ad aggiungerlo al grub.
Nel caso dovesse essere necessario aggiungerlo manualmente nel file 40_custom, useremo questa forma:

menuentry "Windows 7 (on /dev/sda1)" {
insmod ntfs
set root='(/dev/sda,1)'
# oppure
# search --no-floppy --fs-uuid --set 7078b941-9429-4906-9a92-61a25c2e55f5
chainloader +1
}

dove abbiamo nella prima riga il nome dell’SO, nella seconda il tipo di file system, nella terza la partizione in cui risiede il boot (indicheremo ovviamente il boot di Ubuntu anche per avviare Windows, ‘(/dev/sda,1)’ equivale a (hd0,1)).
La riga commentata con L’UUID, anche qui, potrebbe prendere il posto della terza.
L’ultima riga “chainloader +1″ indica al grub di caricare il primo settore di boot della partizione invece del primo settore di boot che ha in memoria.

IMPORTANTE!
Ricordiamoci che dopo ogni modifica che riguarda uno qualsiasi dei files di grub va dato il comando:

# sudo update-grub

che aggiorna il file grub.cfg con le nuove impostazioni.

L’altro file che utilizza grub.cfg quando viene aggiornato è, come abbiamo visto nelle avvertenze dello stesso grub.cfg, il file /etc/default/grub.
Aprendolo:

# sudo gedit /etc/default/grub

appare evidente che ha dei valori personalizzabili.
La prima variabile, “GRUB_DEFAUL=0″, indica al grub di selezionare il sistema in posizione 0 come valore di default, ossia all’avvio del sistema varrà evidenziato il sistema operativo presente nella prima riga del menù di grub. Possiamo cambiare il sistema di default con quello che ci interessa contando le righe a partire da zero. Quindi se il sistema che vogliamo avviare di default si trova al terzo posto nel menù metteremo come valore “GRUB_DEFAUL=2″.
La seconda variabile, “GRUB_HIDDEN_TIMEOUT=0″, ci permette di scegliere se rendere visibile il menù all’avvio o se nasconderlo. Per visualizzarlo basta semplicemente commentare la riga facendola precedere da un cancelletto “#”.
La terza variabile, “GRUB_HIDDEN_TIMEOUT_QUIET=true”, indica se visualizzare (false) o meno (true) il contdown.
La quarta, “GRUB_TIMEOUT=10″, imposta il timeout, ossia il tempo di scelta del sistema a disposizione prima dell’avvio, in questo caso 10 secondi.

Per una guida dettagliata del grub2 possiamo consultare il sito ufficiale:
http://www.gnu.org/software/grub
oppure il wiki:
https://help.ubuntu.com/community/Grub2

Installare e configurare XDebug in Eclipse PDT

5 commenti

Premessa:
Non programmo da molto tempo in php ma appena ho cominciato, provenendo dal mondo java, ho avvertito subito l’esigenza di uno strumento in grado di effettuare il debug delle mie applicazioni web nel modo più completo e amichevole possibile. In realtà il php offre già alcuni strumenti per il debug come ad esempio la function var_dump() ma per avere uno strumento che faccia un debug dettagliato, seguendo passo passo lo stato dell’applicazione durante la sua esecuzione e dando la possibilità di visualizzare quindi lo stato delle variabili coinvolte, bisogna ricorrere a IDE (Integrated Development Environment) più sofisticati e commerciali come Zend Studio. Oppure se si usano editor di sviluppo come l’Eclipse PDT (Php Development Tools) bisogna trovare il plugin opportuno e configurarselo da sé, cosa purtroppo non semplicissima.
Dopo aver cercato tutorial qua e là e aver letto qualche guida più o meno comprensibile sono finalmente riuscito a configurare un debugger decente che mi permettesse di lavorare in modo più efficiente. Il debugger in questione è un’estensione per php che si chiama X-debug, sito ufficiale http://xdebug.org/. Vediamo come configurarlo in Eclipse all’interno del sistema operativo di Ubuntu linux. More

Registrare i video Rai in streaming con Ubuntu

Lascia un commento

Nonostante la Rai si possa ormai equiparare a Mediaset per la qualità scadente dei suoi programmi, sono rimaste alcune trasmissioni più o meno interessanti. È vero però che queste spesso sono trasmesse nelle ore più scomode, ossia in tarda serata, la mattina presto o la domenica sera. Personalmente apprezzo il fatto che molte di queste sono fruibili in streaming sul portale della Rai ma è anche vero che mettersi davanti al monitor per due ore, nel caso per esempio si voglia seguire un reportage di Report, è abbastanza seccante. Allora vediamo come si può registrare un video in streaming in formato divx, fruibile così da qualsiasi lettore di casa. More

Installazione e configurazione di MySql

Lascia un commento

Poiché mi è capitato più volte di dover installare MySql sul mio pc e, come se non bastasse, alternativamente su Linux e su Windows, ogni volta puntualmente non ricordo come configurarlo e devo mettermi lì a risolvere tutti i problemi che mi tira fuori. Ho pensato quindi di appuntarmi la procedura e in un secondo momento di trasferirla sul blog. La seconda parte riguarda Windows Vista. Per non avere la seccattura di conermare un miliardo di volte che quello che si sta facendo non danneggia il sistema opertivo consiglierei, prima di procedere, di disattivare l’UAC, quel brillante sistema di protezione dell’utente che ha reso vincente il nuovo sistema operativo di MS. More

Installiamo i driver mad-wifi

Lascia un commento

I madwifi sono driver open source per schede di rete wireless atheros presenti in molti portatili e netbook. Tra le caratteristiche di questi driver c’è la possibilità di poter utilizzare il software Aircrack, il che lì ha resi molto popolari. Vediamo come installare questi driver in pochi semplici passi su un sistema Ubuntu Intrepid a 64bit. More

Ruit hora

Lascia un commento

sveglia.jpg

Appena aperto il blog e già non ho tempo di aggiornarlo. Giovedì 12 luglio infatti ho un test d’ingresso per poter accedere ad un corso di montaggio video e nei pochi giorni che mi rimangono devo studiare. Non so se ho molte possibilità di riuscirci ma spero che il fatto di aver trattato in parte all’università l’ambito audiovisivo possa giovarmi.
Appena avrò un po’ di tempo disponibile vorrei aggiornare il blog con un po’ di consigli per poter utilizzare Ubuntu subito dopo l’installazione.
Il tempo purtroppo non basta mai e quel poco che abbiamo passa troppo in fretta!

Passiamo a Ubuntu!

3 commenti

Stanchi di deframmentare i vostri hard disk perchè il sistema è lento? Di combattere ogni giorno con un virus diverso? Di dover acquistare questa o quell’altra licenza per poter continuare a usare un software? Allora perchè non formattare un’ultima volta e installare linux e magari Ubuntu? More

Follow

Get every new post delivered to your Inbox.