Il web.xml
è il descrittore di deploy usato per configurare qualsiasi Web application sviluppata con tecnologia J2EE, quindi anche un'applicazione Struts avrà il suo descrittore. In più, per la configurazione di una applicazione Struts, abbiamo bisogno di un secondo file, parimenti importante: lo struts-config.xml
.
In questa lezione però analizziamo i passi necessari a scrivere un web.xml
per Struts, mentre approfondiremo lo struts-config.xml
nella prossima lezione.
Il file web.xml contiene le informazioni di configurazione necessarie all'application server, per caricare i componenti necessari all'avvio dell'applicazione.
Questo file serve infatti a descrivere tutti i componenti dell'applicazione Web, contiene informazioni come:
- Parametri ed inizializzazione ServletContext
- Contenuto localizzato
- Configurazione della sessione
- Definizione Servlet/JSP
- Mapping Servlet/JSP
- Riferimenti a tag library
- Mappature a tipi MIME
- Lista di file di Welcome
- Pagine di errore
- Informazioni sulla sicurezza
Se lo apriamo con un tool come Eclipse, riusciamo ad esaminarne meglio le aree principali:
Una curiosità interessante: Eclipse mette in verdino, vicino ad ogni tag, i tag children previsti dal suo XML Schema.
Sebbene oggi gli ambienti di sviluppo provvedano alla compilazione automatica di questo file, è sempre bene conoscerne la struttura. Perciò possiamo provare a creare un file web.xml
per la nostra applicazione, a partire da uno vuoto:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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>
</web-app>
Configurare la ActionServlet
Il primo passo, uno dei più importanti, consiste nel configurare la ActionServlet che si occuperà di ricevere e smistare tutte le richieste dell'applicazione (il nostro controller). Quindi provvediamo a configurare l'istanza della servlet nel seguente modo:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
</servlet>
È importante notare che abbiamo associato alla servlet il file di configurazione (struts-config.xml
), che, in questo modo, sarà caricato all'avvio dell'applicazione.
Il mapping delle servlet
Il passo successivo, necessario a configurare la servlet controller di Struts nel web.xml
, lo compiamo scrivendo il "mapping delle servlet". Utilizziamo l'elemento <servlet-mapping>
nel seguente modo:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
In altre parole abbiamo detto all'application server di girare tutte le richieste che hanno il suffisso .do
, alla servlet ActionServlet
.
La taglib
Struts mette a disposizione dei tag JSP e per utilizzarli dobbiamo dichiarane l'uso all'avvio dell'applicazione. Per farlo elenchiamo le librerie di tag nel web.xml
, grazie all'elemento <taglib>
:
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
In questo caso abbiamo dichiarato la libreria struts-html
ma come vedremo più avanti non è l'unica messa a disposizione da Struts.
Pagina di benvenuto ed errori
Infine nel deployment descriptor, anche se non vale per le applicazioni che usano Struts, può essere gestita la pagina di benvenuto dell'applicazione:
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
e gli errori HTTP, inserendo i relativi codici (404, 500, etc.):
<error-page>
<error-code>404.jsp</error-code>
<location>404.jsp</location>
</error-page>
Per effettuare prove o verifiche è ecco un esempio completo di web.xml per un'applicazione Struts.