Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet:



Похожие документы
Linguaggi di Programmazione: Paradigmi di Programmazione

Tener traccia del client

Corso di Informatica Modulo T3 B2 - Database in rete

Gestire le sessioni con le Servlet

Programmazione server-side: Java Servlet

Introduzione alla programmazione Http lato server in Java

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Architetture Web: un ripasso

Database e reti. Piero Gallo Pasquale Sirsi

Protocolli e architetture per WIS

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Note pratiche sullo sviluppo di servlet (I)

Esercizi della lezione 5 di Java

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Siti web centrati sui dati (Data-centric web applications)

Applicazioni Web: meccanismi per il passaggio di informazioni tramite HTTP Corso di Applicazioni Telematiche

Java: la libreria delle classi

19. LA PROGRAMMAZIONE LATO SERVER

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

Java Remote Method Invocation

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Applicazioni web centrati sui dati (Data-centric web applications)

GRUPPO DOMANDE N. 1. Quesito n. 1 Descrivere sinteticamente le finalità e le modalità d uso dei seguenti comandi UNIX / LINUX: LS, KILL, PS.

SERVLET & JSP DISPENSE

Architettura MVC-2: i JavaBeans

04/05/2011. Lezione 6: Form

Un esercizio d esame. Flavio De Paoli

Sessioni Applicative in Http. Tito Flagella

Dott.ssa Adriana Pietramala

Accesso Web a Data Base

Architetture Web parte 2

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

Svantaggi delle servlet

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Access. P a r t e p r i m a

20 - Input/Output su File

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

DURANTE LA NAVIGAZIONE NEI SITI WEB I VISITATORI NON SOLO POSSONO CONSULTARE INFORMAZIONI STATICHE

Java: Compilatore e Interprete

Laboratorio di reti II: Java Server Pages

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

Flavio De Paoli

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Java Virtual Machine

APPENDICE A Servlet e Java Server Page


Osservazioni. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2005/06-1

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

dall argomento argomento della malloc()

Introduzione alle applicazioni di rete

Introduzione JDBC interfaccia java.sql driver caricare i driver

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Laboratorio di sistemi Prima Web Application JSP [Java]

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Componenti Web: client-side e server-side

13. Chain of Responsibility

Sviluppo Applicativi personalizzati per automatizzare le Analisi SPC

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Basi di Dati e Microsoft Access

Presentazione Data Base

Lezione 9. Applicazioni tradizionali

Si tratta di un programma per la gestione della messaggistica ( , pec, posta interna, spedizione fax).

Corso di Reti di Calcolatori L-A

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

JDBC di base. Le classi/interfacce principali di JDBC

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Lezione III: Oggetti ASP e interazione tramite form HTML

Database & WWW. Basi di dati Architetture e linee di evoluzione P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone

Funzioni. Il modello console. Interfaccia in modalità console

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

ESEMPI DI FORM (da

Транскрипт:

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 applicazioni indipendenti eseguite all interno del Web server possono servire richieste in parallelo mantengono la sessione di lavoro con il singolo utente efficienti e semplici da utilizzare rispetto ai programmi CGI baldoni@di.unito.it http://www.di.unito.it/~baldoni/didattica 2 e e Una servlet è una classe Java (estensione di Http). Un può ospitare più servlet (con relativi alias) Quando il processo viene lanciato, genera un thread Java che inizializza l oggetto (metodo init), questo persiste per tutta la durata per processo Ogni servlet è un thread all interno del (vs CGI dove viene eseguito un processo esterno) Sono oggetti! 3 4 Richieste Ogni volta che il riceve una richiesta per una servlet S: identifica la servlet S invoca il metodo service dell oggetto S, per far eseguire le operazioni richieste Il metodo service rappresenta l interfaccia del secondo livello di applicazione. Al termine del metodo, S rimanda una risposta sotto forma di pagina HTML Il Web server spedisce la pagina al browser chiamante ES: http://nbbaldoni.di.unito.it/servlets/splppp0001.registration? cognome1=baldoni&nome1=matteo La classe offre i metodi per determinare i parametri di una richiesta (cognome1, nome1) estrarre i valori speficati per i parametri nella richiesta (Baldoni, Matteo) metodi gestiti: POST (dopost), GET (doget) 5 6 1

e Un esempio: Apache, Netscape, Microsoft o Oracle Si vuole realizzare un contatore di accessi le servlet erano inizialmente solo integrate nel Java Web Server della Sun JSP: Java Server Pages, analogo di ASP (Active Server Pages), progetto Tomcat Nella realizzazione si deve tenere conto che piu` utenti potrebbero accedere contemporaneamente alla stessa pagina Modulo ApacheJServ 7 8 public class AccessCounter extends Http { out.println("<head><title> + Contatore degli accessi a questa pagina + </TITLE></HEAD>"); out.println("<body>"); int counter = 1; out.println("<h2>contatore accessi a questa pagina</h2>"); public void service( req, res) throws Exception, IOException { int localcounter; synchronized(this) { localcounter = counter++; out.println("<p>questa pagina e` stata visitata " + localcounter + " volte."); out.println("</body>"); 9 10 Anche quando non vi sono accessi al server l oggetto (la servlet) di tipo AccessCounter permane nella del server stesso. AccessCounter AccessCounter 11 12 2

Un esempio: registration.html Analizzare le informazioni dei componenti di un gruppo inserite tramite una form ed inviate mediante il metodo POST Se non sono rilevati errori spedire una mail con il numero del gruppo (assegnato in modo automatico) e spedire le varie infomazioni raccolte tramite mail Se sono rilevati errori nell immissione dei dati nella form segnalarli tramite una pagina html <FORM ACTION="https://baldo.di.unito.it:8080/registration/servlets/Registration" METHOD="post > <INPUT TYPE="text" NAME=cognome1 VALUE="" SIZE=40> <INPUT TYPE="text" NAME=nome1 VALUE="" SIZE=40> <INPUT TYPE="text" NAME=email1 VALUE="" SIZE=40> <INPUT TYPE="text" NAME=cognome2 VALUE="" SIZE=40> <INPUT TYPE="text" NAME=nome2 VALUE="" SIZE=40> <INPUT TYPE="text" NAME=email2 VALUE="" SIZE=40> <TEXTAREA NAME=commenti COLS=50 ROWS=5></TEXTAREA> <br> <INPUT TYPE="submit" VALUE="Inoltra"> <INPUT TYPE="reset" VALUE="Cancella"> </FORM> 13 14 HTMLPage public class Registration extends Http { int counter; public void service( req, res) throws Exception, IOException { Viene utilizzato sia per l invio con POST sia con GET PrintWriter per l output MIME type della risposta In una servlet la pagina HTML di risposta da inviare all utente è costruita mediante una serie di stampe ma questo puo` risultare pesante. Una soluzione a questo è data da JSP, un altra è definirsi in proprio una classe che permetta di definire oggetti di tipo pagina HTML e che si occupino di inserire tutti i comandi HTML necessari alla formattazione di una pagina HTML 15 16 int localcounter; synchronized(this) { localcounter = counter++; savestate(); Attenzione questa classe l ho definita io per facilitare la creazione di una pagina HTML String cognome1 = req.getparameter("cognome1").trim(); String nome1 = req.getparameter("nome1").trim(); String email1 = req.getparameter("email1").trim(); Estrazione dei parametri inviati alla servlet dalla form Incremento del contatore per il numero del gruppo counter è una variabile condivisa dai vari thread delle diverse richieste della stessa servlet Output della pagina HTML 17 public void init(config config) throws Exception { super.init(config); try { FileReader filereader = richiesta) new FileReader("/tmp/InitDestroyCounter.initial"); BufferedReader bufferedreader = new BufferedReader(fileReader); String initial = bufferedreader.readline(); counter = Integer.parseInt(initial); return; catch(filenotfoundexception ignored) { catch(ioexception ignored) { catch(numberformatexception ignored) { counter = 1; public void destroy() { savestate(); Questo metodo è eseguito quando la servlet è creata (una volta sola alla prima Questo metodo è eseguito automaticamente prima dello shutdown del 18 3

HTTP È Stateless HTTP È Stateless:! Una connessione HTTP è stateless Non vi è nessuna relazione tra una connessione ed una successiva Come trattare informazioni che si vorrebbero persistenti? (esempio il carrello della spesa on-line) È possibile fare uso dei cookie per memorizzare le informazioni che vogliamo rendere persistenti I cookie sono memorizzati presso il client dal browser I cookie sono memorizzati in forma di stringhe 19 20 Pesonal With public class PersonalAccessCounterWith extends Http { public void service( req, res) throws Exception, IOException { page.header.settitle("contatore personale degli accessi"); page.header.setauthor("matteo Baldoni"); page.body.addheading(2, "Contatore personale"); page.body.addparagraph("l'utente ha visitato questa pagina " + ival + " volte."); 21 Pesonal Access Counter With [] cookies = req.gets(); int ival = 1; cookie = null; if (cookies.length > 0) { int i = 0; boolean found = false; while (i < cookies.length &&!found) { cookie = cookies[i]; I cookie possono essere prelevati presso l oggetto if ((cookie.getname()).equals("personalcounter")) { ival = (new Integer(cookie.getValue())).intValue() + 1; cookie.setvalue(ival+""); found = true; if (!found) { cookie = new ("PersonalCounter", "1"); Aggiunta di un else { cookie all oggetto cookie = new ("PersonalCounter", "1"); res.add(cookie); 22 HTTP È Stateless: HttpSession Se le informazioni che si vogliono rendere persistenti possono crescere facilmente Perche` non sfruttare la persistenza degli oggetti presso il server? Questa è la soluzione proposta con la classe HttpSession 23 HTTP È Stateless: HttpSession Solo un cookie con lo viaggia dal server al browser mediante un cookie è generato e assegnato dal 24 4

Pesonal Access Counter With Session public class PersonalAccessCounter extends Http { public void service( req, res) throws Exception, IOException { HttpSession session = req.getsession(true); Creazione di un oggetto di tipo HttpSession se non esiste, previevo dello stesso dalla Java Virtual Machine, altrimenti 25 Pesonal Access Counter With Session page.header.settitle("contatore personale degli accessi"); page.header.setauthor("matteo Baldoni"); page.body.addheading(2, "Contatore personale"); Integer ival = (Integer) session.getvalue("counter"); if (ival == null) Prelievo di un ival = new Integer(1); oggetto dal proprio else ival = new Integer(ival.intValue() + 1); HttpSession session.putvalue("counter", ival); Memorizzazione di un page.body.addparagraph("l'utente " + oggetto session.getid() + " ha visitato questa pagina " + ival + " volte."); 26 HttpSession: vantaggi Piu` facili da gestire Solo l identificativo dell utente viene memorizzato tramite cookie Internet 3-level Architecture Si possono memorizzare veri e propri oggetti mentre con la tecnica dei cookie si deve trasformare l informazione da rendere persistente in stringa da spedire al browser Sfruttano la persistenza degli oggetti presso il RMI/ CORBA JDBC 27 DB Server 28 JDBC Bibliografia JDBC API Interfaccia di programmazione Java per la connessione e l uso di database Paolo Malacarne. Java. Apogeo, 2001. ISBN 88-7303-870-0. 21,69 euro. Driver JDBC - ODBC ODBC di Microsoft Access Permette di scrivere un interfaccia SQL unica per i principali DB: Oracle, MS Access, Sybase,... Sfrutta la security di Java e quella del database attraverso lo specifico driver Giuseppe Naccarato. Java database e programmazone client/server. Apogeo, 2001. ISBN 88-7302-773-9. 35,64 euro. Microsoft Access 29 30 5