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>