Cominciamo la seconda lezione di questo corso analizzando il flusso elaborativo nella logica di
Struts. Per facilitare la comprensione dei prossimi concetti presentiamo sinteticamente i componenti fondamentali di
Struts, che sono:
- ActionServlet: e' la servlet di controllo centralizzata, che gestisce tutte le richieste dell'applicazione;
- struts- config.xml: è il file XML di configurazione di tutta l'applicazione, nel quale vengono definiti gli elementi dell'applicazione e le loro associazioni;
- Action: sono le classi alle quali l'ActionServlet delega l'elaborazione della richiesta;
- ActionMapping: contiene gli oggetti associati ad una Action nello struts-config.xml, come ad esempio gli ActionForward.
- ActionForward: contengono i path ai quali la servlet di Struts inoltra il flusso elaborativo in base alla logica dell'applicazione;
- ActionForm: sono classi contenitori di dati, che vengono popolati automaticamente dal framework con i dati contenuti nelle request HTTP;
- Custom-tags: una serie di librerie di tag che Struts mette a disposizione dello sviluppatore per assolvere a molti dei più comuni compiti delle pagine JSP.
Fatta questa premessa, possiamo passare ad analizzare il ciclo di vita di una richiesta in
Struts. La figura seguente sintetizza questo processo, la cui comprensione è indispensabile allo sviluppatore per il raggiungimento della piena padronanza nell'utilizzo del framework.
L'
ActionServlet legge (0), in fase di start-up, i dati di configurazione dell'applicazione, che sono contenuti nel file
XML struts-config.xml. Il client invia una richiesta HTTP (1), che viene ricevuta dalla servlet di
Struts, che popola l'
ActionForm associato alla richiesta con i dati della
request (2) e l'
ActionMapping con gli oggetti relativi alla
Action associata alla richiesta (4).
L'
ActionServlet delega l'elaborazione della richiesta alla
Action associata al
path della richiesta (3) passandole in input
request,
response HTTP,
ActionForm e
ActionMapping precedentemente valorizzati.
L'
Action si interfaccia con lo strato di business che implementa la logica applicativa; al termine dell'elaborazione restituisce alla
ActionServlet un
ActionForward (6) contenente l'informazione del
path della vista da fornire all'utente. L'
ActionServlet esegue il
forward alla vista specificata nell'
ActionForward (7). Nella prossima lezione cominceremo a descrivere singolarmente i componenti del framework.