Introduzione
MVC è un design pattern(una soluzione progettuale generale ad un problema ricorrente) molto utilizzato nella progettazione del software.
MVC Stà per Model Controller View.
MVC quindi è realizzato attraverso 3 componenti:
- il model contiene i dati e fornisce i metodi per accedervi;
- il view visualizza i dati contenuti nel model;
- il controller riceve i comandi dell'utente (in genere attraverso il view) e li attua modificando lo stato degli altri due componenti
Questo pattern garantisce la suddivisione tra logica di business(gestita dal model) e interfaccia utente(gestia da view e controller).
Volendo applicare tale pattern alla tecnologia Java EE è possibile utlizzare le seguenti tecnologie java applicandole ai vari componenti del pattern.
Model: Tale componente può essere implementato attraverso gli entity bean, e i session bean
Controller: Esso può essere implementato mediante delle servlet.
View: Quest'ultimo attraverso jsp e/o jsf.
Gli entity bean quindi saranno un astrazione per rappresentare i dati, i session bean potranno effettuare delle operazioni sugli entity,
le servlet raccoglieranno l'input dalle jsp (utente) per effettuare richieste ai session bean e comunicare i risultati alle jsp e così via dicendo.
Esempio:
Supponiamo di dover realizzare un'applicazione web che permettare di visualizzare/modificare i dati di una tabella "utenti" presente in un db.
La tabella:Utenti
Le colonne: id, nome, cognome
Inseriamo all'interno della tabella una riga in modo da avere di default almeno un utente.
Supponiamo di utilizzare un persistence provider, ad esempio hibernate
Per tale entità(tabella utenti) è possibile creare un entity bean.
Creaimo inoltre un session bean dotato di entitymanager che realizza i metodi "edit" e "find".
- edit - dato un entity di tipo utenti effettuera l'update rispetto al database usando il metodo merge dell'entitymanager.
- find - dato un id, restituisce l'entity bean che rappresenta i dati in tabella che si trovano nella riga con id indicato.
- .. è possibile implementare anche i metodi "create", "erase" per completezza.
Implementando questa porzione di progetto, si ottiene il componente "Model"
Implementiamo una servlet, (la servlet utente) che richiama mediante la resource injection, @EJB, il session bean.
Quindi dalla servlet richiamando il model e usando il metodo find(1) è possibile ottenere il corrispettivo entity contente i dati dell'utente con id = 1;
Se invece la servlet riceve i parametri GET o POST "id", "nome" e "cognome" allora effettuerà l'aggiornamento sul db, creando un nuovo entity con i dati passati tramite parametri http e richiamando il metodo edit del session bean.
(Nota che quando gli entity abbandonano le componenti ejb, ovvero vengo usati ad esempio, da componenti web, entrano nello stato un-managed..)
La servlet in questo caso realizza il controller.
La servlet in questione setta nell'oggetto request l'attributo "utenti" settando l'istanza utente ottenuta dal session bean e usando un RequestDispatcher effettua un forward verso una jsp che si occupa di mostrare una form html tale da permettere la lettura e la modifica dei dati dell'utente.
La modifica avverà richiamando la servlet utenti di partenza passando opportunamente i rispettivi valori.
Questo breve articolo non ha la presunzione di essere esaustivo, in quanto entrano in gioco diversi concetti e tecnologie.. può comunque costituire punto di partenze per un approccio a MVC a Java EE.
No comments:
Post a Comment