Spring MVC è un framework per realizzare applicazioni web basate sul modello MVC sfruttando i punti di forza offerti dal framework Spring come l'inversion of control (tramite dependency injection) e la aspect oriented programming.
Esso si occupa di mappare metodi e classi Java con determinati url, di gestire differenti tipologie di
"viste" restituite al client, di realizzare applicazioni internazionalizzate e di gestire i cosiddetti temi per personalizzare al massimo l'esperienza utente.
Il pattern MVC
Per comprendere al meglio il framework è necessario introdurre il pattern teorico che esso
implementa ovvero il modello MVC. MVC rappresenta un acronimo per Model View Controller
ovvero le tre componenti principali di un'applicazione web. Grazie a questo pattern i compiti vengono separati verso questi componenti:
- i Model (in italiano Modelli) si occupano di accedere ai dati necessari alla logica di business implementata nell'applicazione (nel caso di un'applicazione per una biblioteca potrebbero essere le classi Libro, Autore, Scaffale);
- le View (in italiano Viste) si occupano di creare l'interfaccia utilizzabile dall'utente e che espone i dati da esso richiesti (nel caso bibliotecario potrebbero essere le pagine HTML del catalogo, le form di ricerca oppure i PDF contenenti ricerche o appunti);
- i Controller (in italiano Controllori) si occupano di implementare la vera logica di business dell'applicazione integrando le due componenti precedenti, ricevendo gli input dell'utente, gestendo i modelli per la ricerca dei dati e la creazione di viste da restituire all'utente (nel nostro caso potrebbero essere il motore di ricerca interno oppure il sistema di login al sito Internet della biblioteca).
MVC in Spring
Spring MVC implementa perfettamente questo approccio mantenendo sia i concetti che la nomenclatura del pattern. All'interno di una applicazione Spring MVC avremo quindi:
- i Model sono rappresentati dalle classi che a loro volta rappresentano gli oggetti gestiti e le classi di accesso al database;
- le View sono rappresentate dai vari file JSP (che vengono compilati in HTML) e da eventuali classi per l'esportazione in formati diversi da HTML (PDF, XLS, CSV...);
- i Controller sono rappresentati da classi (chiamate appositamante Controller) che rimangono
"in ascolto" su un determinato URL e, grazie ai Model e alle View, si occupano di gestire la
richiesta dell'utente.
Secondo la documentazione ufficiale Spring MVC presenta inoltre molti altri vantaggi oltre alla
netta separazione tra le funzionalità:
- è adattabile, flessibile e non intrusivo grazie alla presenza di comode e chiare Java Annotations;
- permette di scrivere codice riusabile;
- possibilità di essere esteso tramite adattatori e validatori scritti ad hoc per le nostre esigenze;
- url dinamici, SEO-friendly e personalizzabili;
- gestione integrata dell'internazionalizzazione e dei temi;
- libreria JSP sviluppata ad hoc per facilitare alcune operazioni ripetitive;
- nuovi scope per i bean (request e session) che permettono di adattare i container base di
Spring anche al mondo web.