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