Il Pattern MVC
J2EE (o JEE): Framework Java per lo
sviluppo di applicazioni WEB
Enterprise, che vivono in rete e che
siano accessibili attraverso browser.
Il famework Sun J2EE
Component, Container e Connector: Semplificare le
applicazioni e favorire la portabilità
I Component sono i componenti delle applicazioni
–
Enterprise Java Bean (EJB)
–
Java Server Page (JSP)
–
Servlet
I Container si occupano dell'interazione tra I client
utilizzatori ed I componeti, fornendo servizi trasparenti,
supporto alla transazioni e resource pooling
–
Web container
–
Bean Container
I connector definiscono una API per integrare servizi di
diversi fornitori (connection service providers)
L'architettura J2EE è nata per favorire l'adozione del
Design Pattern Model View Controller (MVC) nello
sviluppo dei componenti (Il pattern MVC in java è stato
adottato in ambito SWING, mentre è nato in ambito
smaltalk)
Il pattern MVC
•
Contesto
MVC è un pattern architetturale usato per sviluppare
applicazioni complesse su intenret, che richiedono
diversi livelli di interazione.
•
Il Problema affrontato
Le interfacce utente cambiano spesso su internet,
mentre è auspicabile che il livello di core
business e dei dati sia stabile.
•
Soluzione
Applicare il principio della separazione dei contesti, dividendo
l'applicazione in tre aree:
• Model che incapsula I dati e le loro funzionalità
• View si occpua della presentazioni dei dati (ce ne possono
essere diverse in una applicazione)
• Controller elabora l'input dell'utente e le richieste
provenienti dal model per produrre nuove view.Tipica il
controller interpreta le azioni dell' user actions (mouse , tasti,
parole, etc.) e le converte in opportune invocazioni di
funzioni sul model, e seleziona l'appropriata View di
presentazione.
Il pattern MVC privilegia la natura modulare delle
applicazioni, con chiare responsabilità attribuite, dove le
componenti sono indipendenti tra loro, facilmente
intergrabili e manutenibili.
In ambito enterprise/internet l'interazione con I sistemi
può avvenire in modi diversi, HTML, WI-FI, XML, ecc; le
architetture MVC prevedendo la separazione netta tra le
componenti di modellazione, interpretazione e
presentazione, favorisce lo sviluppo, la manutenzione e
l'espansione del software enterprise.
MVC Partecpianti
●
●
Model Definisce i metodi per accedere e modificare
i dati; rappresenta lo stato dell'applicazione. Il
Model può avere la responsabilità di notificare ai
componenti View gli aggiornamenti dati da parte
del controller, in modo che si aggiornino
automaticamente.
Controller Realizza l'associazione tra model e view
Incapsula la logica della applicazione, seleziona le
schermate della view da utilizzare
●
View Delega al Controller i processi conseguenti
l'input dell'utente.
Ha la responsibilità della presentazione dei dati
(GUI), in modo che i dati siano sempre aggiornati. Le
View possono registrare i model come Observer
(Observer Design Pattern-tecnica PUSH). Nel caso di
interfacce tipo pagine JSP (J2EE) che (costruiscono
pagine html statiche) sono le view richiedono
l'aggiornamento (tecnica PULL)
MVC e Application Server
Esistono diversi Framework Java per
l'implementazione del Pattern MVC. Uno di questi è
STRUTS, i cui componenti sono
●
JSP per implementare la parte View (con una tag lib
molto riccae personalizzabile)
●
Servlet e “Action Class” per la parte Controller
●
Java Form Bean per la parte Model
●
Buona parte della logica “controller” è realizzata
tramite il file config.struts, dove vengono mappate
le azioni e le action class
<struts-config>
...
<action
path="/Logon"
forward="/pages/Logon.jsp"/>
<action
path="/LogonSubmit"
type="app.LogonAction"
name="logonForm"
scope="request"
validate="true"
input="/pages/Logon.jsp">
<forward
name="success"
path="/pages/Welcome.jsp"/>
<forward
name="failure"
path="/pages/Logon.jsp"/>
</action>