In questa lezione vediamo come su possa realizzare una applicazione di benvenuto (la classica "Hello World"), che visualizza un messaggio di benvenuto. Iniziamo ad approfondire alcuni concetti e ne lasceremo altri da trattare in seguito.
Dopo aver creato il nostro progetto J2EE con Eclipse importiamo il file struts-blank-1.x.x.war
così come abbiamo visto nella lezione precedente. Ecco ciò che otteniamo lanciando l'applicazione (per esempio su TomCat):
In precedenza abbiamo visto come questo progettino rappresenti l'ossatura di base di una applicazione Struts. In questa lezione continueremo ad analizzare i file di questa applicazione, per comprenderne il funzionamento.
I componenti principali dell'applicazione struts-blank
sono:
- Il file WEB-INF/web.xml
- Il file WEB-INF/struts-config.xml
- I file .jsp (index.jsp, pages/Welcome.jsp)
- Il file WEB-INF/classes/message.properties
- Le api di Struts contenute nella cartella WEB-INF/lib
Il file web.xml come abbiamo detto nelle lezioni precedenti, non è un file di Struts ma il file di configurazione per ogni applicazione J2EE.
Apriamo il file e osserviamo il contenuto degli elementi <servlet>
e <servlet-mapping>
: è sovrapponibile alla configurazione standard già esaminata in precedenza:
<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>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
index.jsp
Infatti anche qui troviamo la configurazione dell'ActionServlet e la sua mappatura, con la delega alla classe ActionServlet
di gestire tutti i file che abbiano estensione .do
. Infine definiamo come file di partenza la vista index.jsp
.
Esaminiamo quindi il file configurazione WEB-INF/struts-config.xml.
<global-forwards>
<forward name="welcome" path="/Welcome.do"/>
</global-forwards>
Nel global-forwards
diciamo che quando viene inviata una richiesta alla pagina /Welcome.do
, questa viene associata ad un forward di nome welcome
<action-mappings>
<action path="/Welcome" forward="/pages/Welcome.jsp"/>
</action-mappings>
Questa dicitura serve per configurare l'action Welcome.do
definendone il forward alla pagina /pages/Welcome.jsp
. Inoltre abbiamo la dichiarazione del message-resource:
<message-resources parameter="MessageResources" />
Lo struts-config della nostra piccola applicazione contiene l'esempio per la configurazione di qualsiasi componente di Struts.
Adesso passiamo alle due viste. La prima è la index.jsp:
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<logic:redirect forward="welcome"/>
Si dichiara il tag <logic>
e si effettua un forward all'action con il nome welcome
configurata nello struts-config
.
La pagina pages/welcome.jsp si compone invece nel seguente modo:
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<html:html>
<head>
<title><bean:message key="welcome.title"/></title>
<html:base/>
</head>
<body bgcolor="white">
<logic:notPresent name="org.apache.struts.action.MESSAGE" scope="application">
<font color="red">
ERROR: Application resources not loaded -- check servlet container
logs for error messages.
</font>
</logic:notPresent>
<h3><bean:message key="welcome.heading"/></h3>
<p><bean:message key="welcome.message"/></p>
</body>
</html:html>
Nelle lezioni successive chiariremo tutte le sue parti, per adesso commentiamo solo queste righe:
<h3><bean:message key="welcome.heading"/></h3>
<p><bean:message key="welcome.message"/></p>
Che servono a prelevare dei messaggi dal "message resource" per comporre la pagina Jsp al momento della compilazione. Per prelevare i messaggi basta specificare la chiave.
Infine abbiamo il file MessageResources.properties
(nella cartella WEB-INF/src/java/
) in cui troviamo le definizioni per tutti i messaggi con le relative chiavi.
welcome.title=Struts Blank Application welcome.heading=Welcome! welcome.message=To get started on your own application, copy the struts-blank.war to a new WAR file using the name for your application. Place it in your container's "webapp" folder (or equivalent), and let your container auto-deploy the application. Edit the skeleton configuration files as needed, restart your container, and you are on your way! (You can find the MessageResources.properties file with this message in the /WEB-INF/src folder.)
Questo sistema, che permette di associare i messaggi alle chiavi, risulta molto utile, specie quando vogliamo internazionalizzare l'applicazione.