Struts, come ogni application framework, è un insieme di classi e interfacce che costituiscono lo scheletro per costruire le nostre Web application. In questa lezione iniziamo ad esaminare i componenti fondamentali e il ciclo di vita delle richieste.
Componente | Descrizione |
---|---|
ActionServlet | È la servlet di controllo che gestisce tutte le richieste dell'applicazione. Come tutte le servlet estende la classe javax.servlet.http.HttppServlet e quindi implementa tutti i metodi di lifecycle, incluso init() , doGet() , doPost() ed il destroy |
struts-config.xml | È il cuore di tutta l'applicazione. In questo file XML possiamo definire i vari elementi dell'applicazione e le loro associazioni. Viene letto in fase di start-up dell'applicazione dalla ActionServlet |
Action | Le Action sono le classi alle quali le ActionServlet delegal'elaborazione della richiesta |
ActionMapping | Contiene gli oggetti associati ad una Action nello struts-config come ad esempio gli ActionForward |
ActionForm | Sono considerati dei veri contenitori di dati. Fanno riferimento ad uno specifico form e vengono popolati automaticamente dal framework con i dati contenuti nella request HTTP |
ActionForward | Contengono i path ai quali la servlet di Struts inoltra il flusso in base alla logica dell'applicazione |
Custom-tags | Sono tag particolari forniti dal framework Struts per assolvere a molti dei più comuni compiti delle pagine JSP |
Il ciclo di vita delle richieste
Vediamo questi componenti all'opera, esaminando il flusso elaborativo che viene innescato in Struts da una richiesta. Per farlo ci serviamo di un semplice schema:
Come abbiamo detto il controller ha la responsabilità di ricevere l'input da un client, invocare le operazioni necessarie alla logica applicativa e coordinare la vista da restituire al client. In altre parole contiene tutte la logica di business.
Il componente Model fornisce gli oggetti necessari alla logica di business per astrarre la persistenza dei dati. Infine le view rappresentano il modo di interagire dell'applicazione con l'utente sia in fase di richiesta che in fase di risposta.
- I dati per la configurazione sono stati letti dallo
struts-config.xml
in fase di startup(0) - il Client invia una richiesta HTTP(1)
- la richiesta quale viene ricevuta dalla servlet di Struts che provvede a popolare l'ActionForm associato alla richiesta con i dati della request(2) e l'ActionMapping associata alla richiesta(4)
- L'Action Servlet delega l'elaborazione dati alla relativa Action(3) passandole in input gli oggetti con request e response HTTP, l'ActionForm e l'ActionMapping precedentemente valorizzati
- La Action compie la logica di business e rende permanente lo stato dell'applicazione colloquiando con il Model(5)
- Al termine dell'elaborazione restituisce alla ActionServlet un ActionForward(6) contenente il path della vista da fornire all'utente
- La Action esegue il forward alla vista specifica nell'ActionForward(7)
Questo flusso di operazioni non è completo e in prima battuta sembra un po' confusionario, ma ci sarà utile come mappa, per avere presenti gli attori che vengono coinvolti nella elaborazione delle richieste in un'applicazione.