Java EE 4. Laboratorio di Ingegneria del software. Andrea Bei
|
|
|
- Gennaro Abbate
- 8 anni fa
- Просмотров:
Транскрипт
1 Java EE 4 Laboratorio di Ingegneria del software Andrea Bei
2 Java EE Pattern Web Tier Model 1 e Model 2 (MVC) Front Controller Service To Worker Business Tier Data Access Object (Integration Tier) Business Delegate Service Locator Risorse Understanding JavaServer Pages Model 2 architecture Core J2EE Pattern J2EE Pattern Catalog
3 Model 1 (*) (*) I JavaBean possono interfacciarsi al DB direttamente o mediante oggetti DAO (scelta migliore) Architettura Model 1: Le pagine JSP processano le richieste, creano e usano JavaBean per elaborare le risposte La logica di business è incapsulata nei JavaBean la presentazione è implementata dalle pagine JSP La separazione presentazione/logica di business non è netta: le chiamate ai metodi dei JavaBean sono effettuate all interno delle pagine JSP Ciò comporta che le pagine JSP sono poco manutenibili dai web designer ed è difficile distinguere nettamente le responsabilità tra web designer e developer E un modello adatto solo per applicazioni semplici
4 Model View Controller Il Pattern Model View Controller (MVC) prevede la progettazione dell applicazione in 3 componenti 1. Model: Logica Di Business 2. View: Logica di Presentazione 3. Controller: Logica di Controllo Il controller ha la responsabilità di Trasformare le interazioni dell'utente sulla View in azioni sul modello Selezionare le View richieste ( pagine nel caso di web application)
5 Model 2 (*) (*) I JavaBean possono interfacciarsi al DB direttamente o mediante oggetti DAO (scelta migliore) Architettura Model 2: E una implementazione di MVC Il Controller è una Servlet che esegue le seguenti azioni per ogni request Riceve la request e in base all azione codificata nella request Crea i bean contenenti i dati visualizzati dalla pagina JSP di destinazione e li inserisce in sessione o nell oggetto request (scelta migliore) (2) Decide la JSP a cui inoltrare la richiesta ed esegue il forward della request (inoltro) (3) La View è una JSP E responsabile di recuperare i bean creati dal controller (4), estrarne il contenuto creando dinamicamente la pagina Il Model è un JavaBean
6 Model 1: caso di studio libreria Architettura di tipo Model 1 Presentation, Application, Services Java Bean JSP,HTML Domain Data transfer object DAO Collection di Data transfer object Persistence DB
7 Model 1: caso di studio libreria Realizzazione caso d uso Inserimento Autore (Architettura) Presentation, Application, Services Autore Bean insautore.html insautore.jsp Domain Autore Libreria Persistence DB
8 Model 1: caso di studio libreria Dati inviati tramite un form. insautore.html <html> <head> <title>inserimento Autore</title> </head> <body> <form method="post" action= insautore.jsp"> <p>nome:<input type="text" name="nome" size="20"></p> <p>cognome: <input type="text" name="cognome" size="20"></p> <p>data di Nascita: <input type="text" name= data" size="20"></p> <p>luogo di Nascita: <input type="text" name= luogo" size="20"></p> <p><input type="submit" value="invia" name="b1"> </form> </body> </html>
9 Model 1: caso di studio libreria <html> <head> <title>inserisciautore</title> </head> page import= AutoreBean"%> <body> <%=request.getparameter("nome")%><br> <%=request.getparameter("cognome")%><br> <%=request.getparameter( data")%><br> <%=request.getparameter( luogo")%><br> <jsp:usebean id= autore" class= AutoreBean" scope="page"> <jsp:setproperty name= autore" property="nome value="<%=request.getparameter("nome")%>"/> <jsp:setproperty name= autore " property="cognome" value="<%=request.getparameter("cognome")%>"/> <jsp:setproperty name= autore " property= datadinascita" value="<%=request.getparameter(" datadinascita ")%>"/> <jsp:setproperty name= autore " property= luogodinascita" value="<%=request.getparameter(" luogodinascita ")%>"/> <% autore.inserisci(); %> </jsp:usebean> </body></html> insautore.jsp
10 Model 1: caso di studio libreria public class AutoreBean { private String nome; private String cognome; private String datadinascita; private String luogodinascita; AutoreBean.java public void setnome(string nome){ this.nome=nome; public String getnome(){ return nome; // altri metodi getter e setter per cognome, datadinascita, luogodinascita public void inserisci(){ Libreria libreria=new Libreria ( libreria, libreria, libreria ); Autore autoredto=new Autore(nome,cognome, datadinascita, luogodinascita); libreria.inserisciautore(autoredto);
11 Model 2: caso di studio libreria Realizzazione caso d uso Seleziona il genere (navigazione) Ricerca.html (1) request GET action=listageneri public class ricerca extends HttpServlet { private processrequest(...,...) { Servlet ricerca Impl. processrequest SelezioneGenere.jsp public void doget(..,..) { processrequest(...,...) public void dopost(..,..) { processrequest(...,...) SelezioneLibro.jsp
12 Model 2: caso di studio libreria <html> Ricerca.html <head> <title>ricerca</title> </head> <body> <p align="center"><font SIZE="+3" COLOR="#800000" FACE="Tahoma"><b>Seleziona il tipo di ricerca</b></font> <table BORDER="0" align="center"> <tr><td> <a href=" </td></tr> <tr><td> <a href=" </td></tr> <tr><td> <a href=" action=listatitoli">titolo</a> </td></tr> </table></p> </body> </html>
13 Model 2: caso di studio libreria import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; import Libreria; Servlet ricerca public class ricerca extends HttpServlet { Libreria l; public void init(servletconfig config) throws ServletException { l=new Libreria("libreria","libreria","libreria"); super.init(config);
14 Model 2: caso di studio libreria protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { String page; String action = request.getparameter("action"); if (action.equals( listageneri ) { // (1) // vengono recuerati i dati e resi disponibile alla JSP Collection listageneri = l.getlistageneri(); request.setattribute(" listageneri ", listageneri ); Servlet ricerca // si decide la JSP a cui forwardare la richiesta page= SelezioneGenere.jsp ; //(2) //. Il codice relativo alle altre action sarà descritte in seguito dispatch(request, response, page); protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { processrequest(request, response); protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { processrequest(request, response); protected void dispatch(httpservletrequest request, HttpServletResponse response, String page) throws javax.servlet.servletexception, java.io.ioexception { RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher(page); dispatcher.forward(request, response);
15 Model 2: caso di studio libreria page session ="true" %> <html> <title>selezione Nome</title> <body><p align="center"> <font SIZE="+3" COLOR="#800000" FACE="Tahoma"> <b>seleziona il genere</b></font></p> <% Collection c= (Collection) request.getattribute("listageneri"); %> <form method="post" action="/servlet/libreria/ricerca"> <input type="hidden" name="action" value= listalibri"> <center> <select name="genere" size="1"> <% Iterator i=c.iterator(); while (i.hasnext()) { String genere = (String) i.next(); %> <option value="<%=genere%>"><%=genere%></option> <% %> </select> <input type="submit" value="invia" name="b1"></center>" </form> </html> SelezioneGenere.jsp
16 Model 2: caso di studio libreria Servlet ricerca protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { String page; String action = request.getparameter("action"); if (action.equals( listageneri ) { //(1) // vengono recuerati i dati e resi disponibile alla JSP Collection listageneri = l.getlistageneri(); request.setattribute(" listageneri ", listageneri ); // si decide la JSP a cui forwardare la richiesta page= SelezioneGenere.jsp ; //(2) if (action.equals( listalibri ) { //(3) // vengono recuerati i dati e resi disponibile alla JSP Collection listalibri = l.getlistalibri(); request.setattribute(" listalibri ", listalibri ); // si decide la JSP a cui forwardare la richiesta page= SelezioneLibro.jsp ; //(4) //. codice relativo ad altre Action dispatch(request, response, page);
17 Model 2: caso di studio libreria page session ="true" %> <html> <title>seleziona Libro</title> <body><p align="center"> <font SIZE="+3" COLOR="#800000" FACE="Tahoma"> <b>seleziona il Libro</b></font></p> <% Collection c= (Collection) request.getattribute("listalibri"); %> <form method="post" action="/servlet/libreria/ricerca"> <input type="hidden" name="action" value= schedalibro"> <center> <select name= libro" size="1"> <% Iterator i=c.iterator(); while (i.hasnext()) { String libro = (String) i.next(); %> <option value="<%=libro%>"><%=libro%></option> <% %> </select> <input type="submit" value="invia" name="b1"></center>" </form> </html> SelezioneLibro.jsp
18 Front Controller Contesto La gestione delle richieste dello strato di presentazione può essere centralizzata (una sola servlet) o decentralizzata (più servlet) Problema l sistema può avere un punto di accesso centralizzato per supportare: Servizi tecnici (autenticazione, autorizzazione, logging, tracciamento della navigazione dell utente, ) Il recupero dei dati La gestione delle viste e della navigazione Se non si ha un accesso centralizzato: Ogni View fornisce i propri servizi tecnici (codice duplicato) La logica di navigazione è lasciata alle View. Non si supporta High Coesion perché le View dovrebbero essere responsabili solo della presentazione Forze Sono necessari dei servizi tecnici centralizzati Esistono molte View che possono essere create con la stessa logica di business La logica dei servizi tecnici e della navigazione è complessa
19 Front Controller Soluzione: si usi un controller come punto iniziale di accesso per la gestione di richieste. Il controller gestisce le richieste Invocando i servizi tecnici Delegando i processi di business Gestendo la scelta della View opportuna (logica di navigazione) Gestendo gli errori Gestendo la strategia di creazione dei contenuti (DAO, EJB,..)
20 Front Controller public class EmployeeController extends HttpServlet { public void init(servletconfig config) throws ServletException { super.init(config); protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { String page; /*preleva le configurazioni di sistema es: pagina di errore **/ ApplicationResources resource = ApplicationResources.getInstance(); try { // Un oggetto helper preleva il valore dei parametri RequestHelper helper = new RequestHelper(request); Command cmdhelper= helper.getcommand(); page = cmdhelper.execute(request, response); // viene eseguita l azione catch (Exception e) {page = resource.geterrorpage(e); dispatch(request, response, page); // inoltra la richiesta alla View
21 Front Controller protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { processrequest(request, response); protected void dopost(httpservletrequest request,httpservletresponse response) throws ServletException, java.io.ioexception { processrequest(request, response); protected void dispatch(httpservletrequest request,httpservletresponse response,string page) throws javax.servlet.servletexception, java.io.ioexception { RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher(page); dispatcher.forward(request, response);
22 Front Controller Strategia Command e Controller Basato sul Command Pattern [GoF] Suggerisce di fornire una interfaccia comune ai componenti helper (*) Supporta Protected Variation rispetto all aggiunta o modificare dei componenti helper non ha impatto sul controller E un approccio valido per tutti i tipi di client (non solo Web) Facilita la creazione di comandi composti (Composite [Gof]) Il termine Action ed il termine Command sono usati spesso come sinonimi (*) COMPONENTI HELPER Sono Pure Fabrication di supporto ( Helper ) In questo caso il supporto è fornito al controller per individuare il comando/azione da eseguire in base ai parametri della request
23 Front Controller Strategia Command e Controller protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { String resultpage; try { RequestHelper helper = new RequestHelper(request); /** il getcommand() internamente usa un factory per recuperare i command objects come segue: Command command = CommandFactory.create(request.getParameter("op")); **/ Command command = helper.getcommand(); // delega la richiesta ad un helper di tipo command object resultpage = command.execute(request, response); catch (Exception e){resultpage = ApplicationResources.getInstance(). geterrorpage(e); dispatch(request, response, resultpage);
24 Service To Worker Contesto Il sistema controlla il flusso di esecuzione ed accede ai dati di business con cui crea dinamicamente le viste Problema La combinazione dei problemi di Front Controller e View Helper Forze Si eseguono le fasi di Autenticazione e Autorizzazione per ogni richiesta Il codice delle Scriptlet nelle View deve essere minimizzato La logica di business deve essere incapsulata in componenti Il flusso di controllo è complesso La logica di gestione delle viste e della navigazione è complessa Soluzione Si creino un controller e un dispatcher combinati con View ed Helper Il controller delega a classi Helper il recupero di dati dallo strato di business Il dispatcher è responsabile per la gestione delle View e la navigazione e può essere incapsulato direttamente nel controller o in un altraclasse
25 Service To Worker autenticazione, autorizzazione, recupero dei contenuti, validazione dell input, navigazione, dispatch View (statica o dinamica)
26 Service To Worker Strategia dispatcher nel controller Quando la logica di dispatching non è complessa (es: è statica) è possibile inserirla direttamente nel controller
27 Data Access Object Contesto I componenti di accesso ai dati variano a seconda della fonte dati (RDBMS, Flat File, ODBMS, ) Problema I componenti di accesso ai dati sono dipendenti dalla tecnologie delle sorgenti di dati: JDBC (per DB relazionali) EJB (per applicazioni Business 2 Businss) Web Services Quando la sorgente dei dati cambia tali componenti devono essere cambiati per gestire il nuovo tipo di sorgente Forze Tutti i casi in cui è necessario supportare Protected Variations rispetto alla sorgent dei dati Soluzione Usare un Data Access Object (DAO) per astrarre ed incapsulare la logica di accesso alla sorgente dei dati. Il DAO gestisce la connessione con la sorgente dei dati e ottiene e memorizza I dati
28 Data Access Object BusinessObject E un qualsiasi Client che richiede dati al DAO
29 Data Access Object
30 Data Access Object Strategia DAO Factory Quando la tecnologia usata per la persistenza non cambia è possibile usare un solo factory per tutti i DAO necessari alla applicazione
31 Data Access Object Strategia DAO Factory Quando la tecnologia usata per la persistenza cambiaè possibile usare il Pattern Abstract Factory (Gof)
32 Data Access Object Esempio (DAO Factory)
33 Data Access Object Esempio (DAO Abstract Factory)
34 Data Access Object Esempio (DAO Abstract Factory) public abstract class DAOFactory { public static final int CLOUDSCAPE = 1; public static final int ORACLE = 2; public static final int SYBASE = 3; // Un metodo per ogni DAO public abstract CustomerDAO getcustomerdao(); public abstract AccountDAO getaccountdao(); public abstract OrderDAO getorderdao();... public static DAOFactory getdaofactory(int whichfactory) { switch (whichfactory) { case CLOUDSCAPE: return new CloudscapeDAOFactory(); case ORACLE : return new OracleDAOFactory(); case SYBASE : return new SybaseDAOFactory(); default :
35 Data Access Object Esempio (DAO Abstract Factory) public class CloudscapeDAOFactory extends DAOFactory { public static final String DRIVER= "COM.cloudscape.core.RmiJdbcDriver"; public static final String DBURL jdbc:cloudscape:rmi://localhost:1099/j2eedb"; public static Connection createconnection() { // Qui ci va il codice di creazione della connection public CustomerDAO getcustomerdao() { return new CloudscapeCustomerDAO(); public AccountDAO getaccountdao() { return new CloudscapeAccountDAO(); public OrderDAO getorderdao() { return new CloudscapeOrderDAO();...
36 Data Access Object Esempio (DAO Abstract Factory) public interface CustomerDAO { public int insertcustomer(...); public boolean deletecustomer(...); public Customer findcustomer(...); public boolean updatecustomer(...); public RowSet selectcustomersrs(...); public Collection selectcustomersto(...);...
37 Data Access Object Esempio (DAO Abstract Factory) public class CloudscapeCustomerDAO implements CustomerDAO { public CloudscapeCustomerDAO() { // initialization public int insertcustomer(...) { // implementazione public boolean deletecustomer(...) { // implementazione public Customer findcustomer(...) { public Collection selectcustomersto(...) { // Implementazione: ritorna una Collection di DTO...
38 Data Access Object Esempio (DAO Abstract Factory) public class Customer implements java.io.serializable { int CustomerNumber; String name; String streetaddress; String city;... // metodi getter e setter......
39 Data Access Object Esempio (DAO Abstract Factory) // creo il DAO Factory DAOFactory cloudscapefactory = DAOFactory.getDAOFactory(DAOFactory.DAOCLOUDSCAPE); // Creo un DAO CustomerDAO custdao = cloudscapefactory.getcustomerdao(); // creo un nuovo customer int newcustno = custdao.insertcustomer(...); // cerco un customer. Mi viene restituito un DTO Customer cust = custdao.findcustomer(...); cust.setaddress(...); // modifico il DTO cust.set (...); // aggiorno le informazioni custdao.updatecustomer(cust); // cancello un customer... custdao.deletecustomer(...);
40 Business Delegate Contesto Un sistema prevede l invocazione di servizi I client devono gestire la complessità dell accesso ai servizi Problema Se i componenti dello strato di presentazione invocano direttamente i servizi di business distribuiti Forze I componenti dello strato di presentazione sono fragili rispetto ai cambiamenti dell implementazione dei servizi di business Potrebbe esserci un basso livello di performance per mancanza di caching I componenti dello strato di presentazione devono accedere a servizi di business Le API dei servizi di business potrebbero cambiare con l evoluzione dei requisiti E opportuno implementare dei meccanismi di caching per ridurre il traffico di rete tra i client ed i servizi di business
41 Business Delegate Soluzione Usare un Business Delegate per ridurre l accoppiamento tra strato di presentazione e i servizi di business. Il Business Delegate nasconde i dettagli di implementazione di lookup e accesso di servizi di business Il LookupService può essere parte del BusinessDelegate o un Componente separato (come propone il Pattern Service Locator)
42 Business Delegate
43 Service Locator Contesto Necessità di incapsulare il lookup di servizi di business Problema Delocalizzare il servizio Disaccoppiare il client dal problema di recuperare un riferimento del servizio
44 Service Locator Soluzione Si usi un Service Locator per nascondere la complessità del lookup di oggetti service Più client possono riusare il Service Locator per ridurre la complessità, avere un unico punto di controllo e migliorare le performance con meccanismi di caching
45 Service Locator
Laboratorio di sistemi Prima Web Application JSP [Java]
Vogliamo scrivere la nostra prima web application che legga da tastiera il nostro nome e fornisca un messaggio di saluto. Per costruire la nostra applicazione creiamo con NetBeans un nuovo progetto. File
Programmazione Java Avanzata. MVC Model, View,, Controller. Ing. Gianluca Caminiti
Programmazione Java Avanzata MVC Model, View,, Controller Ing. Gianluca Caminiti Uso di JSP: complessità crescente Invocare codice Java direttamente. Posizionare tutto il codice Java in una pagina JSP
Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008
Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Avvertenze: e severamente vietato consultare libri e appunti; chiunque verrà trovato in possesso di
Introduzione alla programmazione Http lato server in Java
Introduzione alla programmazione Http lato server in Java Tito Flagella Laboratorio Applicazioni Internet - Università di Pisa Slide API Java Titleper il Protocollo Http Programmazione Client java.net.url
1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org
1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org Applicazione J2EE sul SAP WAS con SAP NWDS. Il SAP Web Application Server fornisce un framework integrato per lo sviluppo e l
CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION
CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION 0 DURATA 200 ore CONTENUTI Oracle PL/SQL Introduzione al PL/SQL Cenni su SQL con utilizzo di SQL*PLUS Configurazione ambiente Developer DB Classi,
Laboratorio di sistemi MVC versione 2 Jsp (NetBeans)
Definizione Adattato da "http://it.wikipedia.org/wiki/model-view-controller" Model-View-Controller (MVC, talvolta tradotto in italiano Modello-Vista-Controllore) è il nome di un design pattern fondamentale
1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet
1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet Controllo dell utente connesso al sito tramite JSP, Java Beans e Servlet. Ciò che ci proponiamo di fare è l accesso
Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet:
e JDBC Programmazione in Rete e Laboratorio Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino e : estensioni del Java API permettono di scrivere
Corso di Applicazioni Telematiche
Corso di Applicazioni Telematiche A.A. 2008-09 Lezione n.12 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Una Servlet è un componente software scritto in Java,
Java Enterprise Edition - JEE. Autore: Agostino Sorbara ITIS M. M. Milano
Java Enterprise Edition - JEE Autore: Agostino Sorbara ITIS M. M. Milano Indice Introduzione 2 Il modello Client Server. 2 La piattaforma di sviluppo JEE... 3 Application Server... 3 Servlet. 4 JSP (Java
SERVLET & JSP DISPENSE
SERVLET & JSP DISPENSE PROGRAMMAZIONE LATO SERVER Un server deve rispondere alle richieste del client e permettere di visualizzare le pagine Web. Questo compito è svolto da un software ben definito, il
Corso Programmazione Java Avanzato
Corso Programmazione Java Avanzato Codice: ITJA0113 Durata: 40 ore Descrizione corso Questo corso fornisce una panoramica sulle tecnologie impiegate per la realizzazione di applicazioni web basate sulla
Laboratorio di reti II: Java Server Pages
Laboratorio di reti II: Java Server Pages Stefano Brocchi [email protected] 6 aprile, 2009 Stefano Brocchi Laboratorio di reti II: Java Server Pages 6 aprile, 2009 1 / 34 JSP - Java Server Pages Le
Programmazione server-side: Java Servlet
Programmazione server-side: Java Servlet Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.11 parte II Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Cos
Accesso Web a Data Base
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Accesso Web a Data Base Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei -
Verso l architettura MVC-2 Java Server Pages (JSP)
Verso l architettura MVC-2 Java Server Pages (JSP) 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 JSP Una pagina JSP può essere vista come uno schema di pagina Web dove: le
Framework di Middleware. per Architetture Enterprise
Framework di Middleware per Architetture Enterprise Corso di Ingegneria del Software A.A.2011-2012 Un po di storia 1998: Sun Microsystem comprende l importanza del World Wide Web come possibile interfaccia
Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC
Programma didattico Sviluppare Applicazioni Distribuite in ambiente Spring MVC Programma del corso 1.Progettazione e Sviluppo Database Relazionali Questa competenza permette di Progettare e Sviluppare
Programmazione Java Avanzata PATTERN
Programmazione Java Avanzata PATTERN Anno 2011/2012 Pattern Una soluzione progettuale generale a un problema ricorrente Elementi per il riuso di software ad oggetti Vantaggiosi e obbligatori da usare Pattern
MODEL-VIEW-CONTROLLER PROBLEMA
MODEL VIEW CONTROLLER DESIGN PATTERN MODEL-VIEW-CONTROLLER INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 [email protected]
Un contatore di accessi
Un contatore di accessi Scriviamo una servlet che conta il numero di accessi e lo visualizza. Sfruttiamo il fatto che Tomcat, quando riceve la richiesta di una servlet, crea un istanza della classe corrispondente.
Le JavaServer Pages - Lezione 7 I JavaBean
Le JavaServer Pages - Lezione 7 I JavaBean A cura di Giuseppe De Pietro ([email protected]) Contenuti Nelle lezioni precedenti abbiamo visto gli elementi principali delle Java Server Pages, come
Gestire le sessioni con le Servlet
PROGETTO Gestire le sessioni con le Servlet Con il termine sessione si intende un insieme di attività correlate, con una o alcune di queste che sono preliminari ad altre. Si pensi, per esempio, a un qualsiasi
CORSO DI PROGRAMMAZIONE JAVA
CORSO DI PROGRAMMAZIONE JAVA Corso di Programmazione Java Standard Edition ( MODULO A) OBIETTIVI ll corso ha come obiettivo quello di introdurre la programmazione a oggetti (OOP) e di fornire solide basi
Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL)
Pag. 1/12 Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL) Prendiamo in esame un qualsiasi progetto NetBeans tra quelli studiati che fa uso di un database
Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3
Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 Verso l architettura MVC-2 2 Il secondo passo verso l architettura MVC-2 è quello di separare il controllo dell
Laboratorio di Basi di Dati
Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 9 Architettura Model-View-Controller (MVC) Adottando l'architettura MVC e la tecnologia Servlet-JSP, un'applicazione web può essere realizzata
Siti web centrati sui dati Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]
Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema
Servlet API. Programmazione in Ambienti Distribuiti A.A. 2003-04
Servlet API Programmazione in Ambienti Distribuiti A.A. 2003-04 Servlet Interfaccia Java che modella il paradigma richiesta/elaborazione/risposta tipico delle applicazioni lato server Presuppone l esistenza
3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni
IIndice Capitolo 1 Da dove partiamo: pagine web statiche 1 1.1 Principi di base.............................. 1 1.1.1 Il paradigma client-server.................... 1 1.1.2 Ipertesto, multimedia, ipermedia................
Applicazioni web. Parte 2 JSP. Michele Tomaiuolo [email protected]
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 2 JSP Michele Tomaiuolo [email protected] Sommario JSP: sintassi di
Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
MVC - Principio. MVC Model View Controller. MVC - Terminologia. MVC - Funzionamento. Richiesta. Controller. Model. Risposta. View
MVC View Controller! Si tratta di un pattern di progettazione introdotto originariamente con Smalltalk (1980 Xerox)! Si basa su astrazioni presenti in tutte le applicazioni dotate di interfaccia grafica!
Object-Relational Mapping
Object-Relational Mapping Antonella Poggi Domenico Lembo Dipartimento di informatica e Sistemistica Università di Roma La Sapienza Progetto di Applicazioni Software Anno accademico 2009-2010 Approccio
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
Architettura Model-View-Controller (MVC)
Laboratorio a o o di Basi di Dati e Web Docente: Alberto Belussi Lezione 9 Architettura Model-View-Controller (MVC) Adottando l'architettura MVC e la tecnologia Servlet-JSP, un'applicazione web può essere
Osservazioni. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2005/06-1
Osservazioni Nell esempio della precedente lezione del contatore di accessi persistente il nome del file in cui memorizzare il numero di hit ed il valore iniziale del contatore sono codificati direttamente
Laboratorio di Basi di Dati e Web
Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 9 Architettura Model-View-Controller (MVC) Adottando l'architettura MVC e la tecnologia Servlet-JSP, un'applicazione web può essere realizzata
Svantaggi delle servlet
Svantaggi delle servlet Le servlet sono la tecnologia principale di J2EE per comunicare con i browser dei client. Tuttavia ci sono degli inconvenienti per gli sviluppatori di applicazioni web: le servlet
Laboratorio di Basi di Dati e Web
Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 6 Servlet Servlet: classi java che estendono le funzionalità di un server Web generando dinamicamente le pagine Web. Riferimento: http://java.sun.com/products/servlets
Laboratorio di Basi di dati
Laboratorio di Basi di dati Docente: Alberto Belussi Lezione 6 Servlet Servlet: classi java che estendono le funzionalità di un server Web generando dinamicamente le pagine Web. Riferimento: http://www.oracle.com/technetwork/java/javaee/servlet/index.html
Note pratiche sullo sviluppo di servlet (I)
Note pratiche sullo sviluppo di servlet (I) Nel caso in cui sulla macchina locale (PC in laboratorio/pc a casa/portatile) ci sia a disposizione un ambiente Java (con compilatore) e un editor/ambiente di
Laboratorio di Progettazione di Sistemi Software Design Patterns
TITLE Laboratorio di Progettazione di Sistemi Software Design Patterns Valentina Presutti (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Tipi di Design Patterns Creazionali Strutturali Comportamentali
Programmazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi [email protected] Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
SERVLET & JSP DISPENSE
SERVLET & JSP DISPENSE PROGRAMMAZIONE LATO SERVER Un server deve rispondere alle richieste del client e permettere di visualizzare le pagine Web. Questo compito è svolto da un software ben definito, il
J2EE (o JEE): Framework Java per lo sviluppo di applicazioni WEB Enterprise, che vivono in rete e che siano accessibili attraverso browser.
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:
Java Server Pages. Corso di Applicazioni Telematiche. A.A. 2006-07 Lezione n.18 Prof. Roberto Canonico
Java Server Pages Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.18 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Java Server Pages (JSP) Java Server
Framework. Impianti Informatici. Web application - tecnologie
Framework Web application - tecnologie Web Application: tecnologie 2 Java-based (J2EE) Sviluppata inizialmente da Sun Cross-platform e open source Gestire direttamente le funzionalità dell applicazione
L architettura MVC (Model- View-Controller) Introduzione
L architettura MVC (Model- View-Controller) Introduzione Architettura MCV L architettura MVC è un insieme di regole per strutturare un sito-web dinamico. Queste regole complicano la struttura del sito,
Architetture Web: un ripasso
Architetture Web: un ripasso Pubblicazione dinamica di contenuti. Come si fa? CGI Java Servlet Server-side scripting e librerie di tag JSP Tag eseguiti lato server Revisione critica di HTTP HTTP non prevede
Basi di Dati. JDBC - Esercitazione n. 4 Quaderno n. 4. Passi preliminari per lo svolgimento delle esercitazioni
Basi di Dati JDBC - Esercitazione n. 4 Quaderno n. 4 La finalità di questa esercitazione è scrivere le parti mancanti di una semplice applicazione Java che utilizza JDBC per accedere ad una base di dati.
Tecnologie di Sviluppo per il Web
Tecnologie di Sviluppo per il Web Applicazioni Web J2EE: Struttura dell Applicazione versione 2.4 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Alberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
Laboratorio di Basi di Dati e Multimedia
Laboratorio di Basi di Dati e Multimedia Laurea in Tecnologie dell Informazione: Multimedia Docente: Alessandra Di Pierro Email: [email protected] Lezione 7 Java DataBase Connectivity JDBC consente
Laboratorio di Basi di Dati
Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 10 Architettura Model-View-Controller (MVC) L'architettura MVC può essere applicata anche alla tecnologia PHP secondo diversi approcci. In questa
1 EJB e Portal Component Object http://desvino.altervista.org
1 EJB e Portal Component Object http://desvino.altervista.org In questo tutorial studiamo come sfruttare la tecnologia EJB, Enterprise JavaBean, all interno del SAP Netweaver Portal. In breve, EJB è un
Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni
Tomcat & Servlet Programmazione in Ambienti Distribuiti V 1.2 Marco Torchiano 2005 Contenuti Tomcat Applicazioni Web Struttura Sviluppo Deployment Servlet JSP Uso delle sessioni 1 Tomcat Tomcat è un contenitore
Session tracking Session tracking HTTP: è stateless, cioè non permette di associare una sequenza di richieste ad un dato utente. Ciò vuol dire che, in generale, se un browser richiede una specifica pagina
Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria. Laurea Magistrale in Ingegneria Informatica
Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione Facoltà di Ingegneria Laurea Magistrale in Ingegneria Informatica Tesi di Laurea Sistema informativo per la gestione dei processi
Tener traccia del client
Tener traccia del client Raramente un applicazione web è costituita da una singola pagina (risorsa). E utile quindi tener traccia dei client che si collegano per rendere più semplice lo sviluppo dell applicazione.
FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
