A.a. 2004/05Tecnologie Web1 Applicazioni Web server-side: Java Servlet.

Slides:



Advertisements
Presentazioni simili
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Advertisements

Gli ipertesti del World Wide Web Funzionamento e tecniche di realizzazione a cura di Loris Tissìno (
CORSO DI SICUREZZA SU RETI II PROF. A. DE SANTIS ANNO 2006/07 Informatica granata Gruppo 2 ISP Gruppo 3 ISP.
Corso di Fondamenti di Informatica
Accesso ai dati su Relational Database Management Systems LSA - Laboratorio di Sistemi Informativi Economico-Aziendali Salvatore Ruggieri Dipartimento.
Architetture dei sistemi distribuiti Prof
DBMS (DataBase Management System)
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
Database MySql.
Recupero debito quarto anno Primo incontro
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
PHP.
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
Sistema di gestione flussi documentali
Web Services.
Java Enterprise Edition (JEE)
Mantenimento dello stato Laboratorio Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Laboratorio di Progettazione Web Introduzione AA 2009/2010 Chiara Renso ISTI - CNR -
Connessione con MySQL.
Università degli Studi di Modena e Reggio Emilia
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
Database nel Web Modulo Didattico: Francesca Platania
1 Basi di dati e Web Prof. Stefano Paraboschi Prof. Barbara Pernici.
Analisi dettagliata e design B. Pernici M.G. Fugini AA
OO.1 Marco Ronchetti - Java Sql package.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Basi di dati. Vantaggi degli archivi digitali Risparmio di spazio: sono facilmente trasferibili e duplicabili Risparmio di tempo: si può accedere ai dati.
Struttura dei sistemi operativi (panoramica)
1 Linux day /11/2003 ADA. Dai requisiti al progetto Come nasce il progetto di una piattaforma e-learning Open Source.
APPLICAZIONI WEB In questo corso impareremo a scrivere un'applicazione web (WA) Marco Barbato - Corso di Applicazioni Web – A.A
Daniel Stoilov Tesi di Laurea
JDBC(TM) Database Access
Elaborazione di Franco Grivet Chin
Introduzione ad ASP.net
Struts. Framework open source per lo sviluppo di applicazioni web su piattaforma J2EE. Progetto inizialmente sviluppato come sotto-progetto di Apache.
Architettura Java/J2EE
Corso di PHP.
DBMS ( Database Management System)
Ing. Enrico Lecchini BetaTre S.r.l.
Chinosi Michele – matr.: La seconda release di Virtuose basata su database XML La seconda release di Virtuose basata su.
Guida IIS 6 A cura di Nicola Del Re.
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Basi di Dati e Sistemi Informativi
Sistemi Informativi sul Web
Il World Wide Web Lidea innovativa del WWW è che esso combina tre importanti e ben definite tecnologie informatiche: Documenti di tipo Ipertesto. Sono.
BIOINFO3 - Lezione 111 CGI-BIN CGI-BIN sono chiamati i programmi la cui esecuzione può essere richiesta attraverso il WEB. Il server web (httpd) della.
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
Applicazione Web Informatica Abacus Informatica Classe VIA 2008/2009 N.Ceccon INF (01) Revisione 4.0 settembre 2008.
DB- Sistemi Informativi
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
I DATABASE.
Pagine ASP parte 3 I data base Stefano Schacherl.
Laboratorio di Servizi Web - servlet - Ardissono 1 Java Servlet API package javax.servlet: include classi e interfacce di gestione di servlet indipendenti.
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Analisi dettagliata e design
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Protocolli e architetture per WIS. Cronologia di Internet ricerche sulla commutazione di pacchetto (Leonard Kleinrock) 1967 Nasce il progetto.
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Laboratorio di Servizi Web - servlet - Ardissono 1 Chiarimenti su Servlet Note aggiuntive su architettura di applicazione web che usa Servlet per gestire.
Relatore: Prof. Ing. Stefano SalsanoLaureando: Flaminio Antonucci.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 -Protocolli del Web Ernesto Damiani Lezione 1 – World Wide.
Servizi Internet Claudia Raibulet
CORSO INTERNET la Posta elettronica
Tecnologie lato Server: i Server Web © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.
Eprogram informatica V anno.
Architetture software
Eprogram informatica V anno. Programmare in rete.
ASP – Active Server Pages - 1 -Giuseppe Tandoi ASP – Active Server Pages Tecnologia per lo sviluppo di pagine dinamiche.
Transcript della presentazione:

a.a. 2004/05Tecnologie Web1 Applicazioni Web server-side: Java Servlet

a.a. 2004/05Tecnologie Web2 Ricordiamoci che… Il Web è basato su unarchitettura client-server Server = processo (programma in esecuzione) che –resta in ascolto (in attesa di richieste) su una macchina server –ad ogni richiesta esegue unazione per gestirla (recuperare una pagina web, eseguire un programma, …) –restituisce al chiamante risultato (pagina richiesta, risultato di esecuzione del programma, …) Client = programma che effettua richieste al server Il protocollo applicativo utilizzato dal Web è HTTP, che è basato su due tipi di azioni –richiesta (request) da client a server –risposta (response) da server a client

a.a. 2004/05Tecnologie Web3 La richiesta del client è espressa mediante un URL (identificatore univoco di una risorsa sul Web), può richiedere: La visualizzazione, sul client, di una pagina statica: La visualizzazione, sul client, di una pagina dinamica, frutto di unelaborazione precedentemente avvenuta sul server: Lesecuzione, sul server, di un programma: In questi ultimi due casi è possibile includere nella richiesta dei dati (parametri) su cui la pagina dinamica o il programma potranno lavorare: negozio/calcolaPrezzo?prec=100&spesa=25 HTTP request: URL

a.a. 2004/05Tecnologie Web4 HTTP request: metodo GET La richiesta del client può utilizzate due diverse modalità: 1) Il metodo GET il client inserisce i parametri (dati) contenuti nella richiesta HTTP in coda allURL sono visibili nella barra dellindirizzo del browser!!! Per es: negozio/ calcolaPrezzo?prec=100&spesa=25 Tipo di informazioni trasmissibile è limitato (molti browser limitano lunghezza di URL+query a 255 caratteri) 2) Il metodo POST i dati (parametri) vengono incapsulati allinterno del messaggio di richiesta (e non in coda allURL) e quindi NON sono visibili allutente Può inviare al server quantità illimitata di dati

a.a. 2004/05Tecnologie Web5 Applicazioni web server-side In generale unapplicazione web (server-side) è composta di molte risorse, statiche (es. pagine HTML) o dinamiche (programmi eseguibili) I programmi che appartengono ad unapplicazione web server-side sono programmi come altri ma: li si deve poter invocare attraverso il web server quando il server riceve la richiesta, deve poter identificare ed eseguire il programma richiesto il web server deve poter passare al programma la HTTP request (affinchè il programma la interpreti) quando il programma ha ottenuto il risultato, lo impacchetta e lo invia al web server che lo spedisce al client via HTTP response

a.a. 2004/05Tecnologie Web6 Tecnologie server-side: CGI Common Gateway Interface la tecnologia CGI permette ad un web server di invocare un programma esterno passandogli i dati contenuti nella HTTP request il programma invocato processa la HTTP request, esegue il suo lavoro (per es. query a database) e restituisce il risultato al web server che, attraverso la HTTP response, lo invia al client supportata praticamente da tutti i web server programmi CGI possono essere scritti in molti linguaggi diversi, ma il più usato è Perl E una tecnologia vecchia, superata in particolare dalle Java Servlet

a.a. 2004/05Tecnologie Web7 Tecnologie server-side: Java Servlet Java Servlet = tecnologia server-side offerta in ambiente Java Una servlet è un programma Java che gestisce HTTP request e restituisce HTTP response estende le funzionalità del web server Le servlet girano nel processo del web server e agiscono come livello intermedio tra: –richieste provenienti da HTTP clients (web browser,...) –database e altre sorgenti informative gestite dal server Le servlet caricate nel processo del server, vivono (restano in esecuzione) finché non vengono esplicitamente scaricate (lesecuzione viene terminata) possono gestire innumerevoli richieste da parte dei client gestiscono ogni HTTP request in un thread separato parallelismo in esecuzione (anche se i programmi e i dati generali sono in copia unica)

a.a. 2004/05Tecnologie Web8 Java Servlet: vantaggi Essendo programmi duraturi –permettono a web server di gestire interazioni complesse con iclient (non solo singole risposte a singole richieste, ma anche sequenze di request- response con gestione di stato dellinterazione) –permettono di integrare la logica dellapplicazione in processo di scambio di HTTP request e response Essendo scritte in Java –sono indipendenti dalla piattaforma su cui devono girare (portabilità) –possono sfruttare tutti i vantaggi dati dalla disponibilità delle librerie Java e dalla JVM Sono più efficienti dei CGI (perchè non creano un nuovo processo per ogni richiesta del client come fanno i CGI)

a.a. 2004/05Tecnologie Web9 Java Servlet: Web Container - I Per costruire unapplicazione web basata sulluso di servlet è necessario un Web Container (o Servlet Container o Servlet Engine); il Web Container: –carica le servlet nel processo del web server (alla prima invocazione della servlet) –supporta il protocollo HTTP (per gestire il flusso request/response) –gestisce al suo interno più applicazioni, ognuna identificata da un servlet context (nome univoco) contenuti statici (pag. html, immagini) Web Container HTTP Server client (browser) HTTP request HTTP response

a.a. 2004/05Tecnologie Web10 Java Servlet: Web Container - II Il Web Container è un Java runtime che ospita ed esegue applicazioni web (crea, inizializza ed invoca servlet e JSP) Tipi di Web Container: –Web Container incluso nel web server: web server scritti in Java includono Web Container Es: Jakarta Tomcat (di Apache) –Web Container in J2EE application server: application server che gestiscono Enterprise Java Beans includono anche web server e web container –Web Container in runtime separato: web servers come Apache e Microsoft IIS necessitano di runtime separato per gestire le servlets, più un plug-in che gestisce la comunicazione tra web server e Web Container

a.a. 2004/05Tecnologie Web11 Applicazioni web: ambiente Java Java servlet JSP Java classes, archives Java classes, archives Java classes, archives Deployment descriptor (web.xml) Applicazione web Java servlet JSP Java classes, archives Java classes, archives Java classes, archives Deployment descriptor (web.xml) Applicazione web Web Container (es. Jakarta Tomcat) sweb5 sweb8 servlet context servlet context

a.a. 2004/05Tecnologie Web12 Java Servlet: invocazione - I Invocazione di unapplicazione basata su Java Servlet Web Container web server browser Servlet/JSP instances Applicazione web HTTP request 1: il web browser invia una richiesta 2: il web server identifica lapplicazione (via servlet context del Web Container, es. sweb5) e delega la gestione della richiesta 3: il Web Container identifica il tipo di applicazione (JSP, servlet). Se si tratta di una servlet, identifica la servlet instance e delega la richiesta (passa i dati in HTTP request e loggetto HTTP response, in cui si aspetta il risultato) sweb5

a.a. 2004/05Tecnologie Web13 Java Servlet: invocazione - II Web Container web server browser Servlet/JSP instances Applicazione web HTTP response 6: il web server invia la risposta al browser 5: il Web Container invia la risposta al web server 4: la servlet: interpreta la HTTP request gestisce la richiesta invia il risultato al Web Container attraverso HTTP response sweb5

a.a. 2004/05Tecnologie Web14 Java Servlet: invocazione - III Linvocazione di una servlet può essere fatta da: Form HTML, utilizzando sia POST sia GET Link (URL con parametri): negozio/calcolaPrezzo?prec=100&spesa=25 in questo caso la richiesta utilizza il metodo GET Una servlet può gestire sia richieste inviate tramite POST (grazie al metodo doPost), sia richieste inviate tramite GET (grazie al metodo doGet) NB: I metodi doPost e doGet contengono le istruzioni da eseguire quando la servlet riceve la richiesta: è il programmatore a doverli implementare!

a.a. 2004/05Tecnologie Web15 FORM HTML - I

a.a. 2004/05Tecnologie Web16 FORM HTML - II... campi del modulo... Attributi del tag FORM : METHOD: specifica il modo in cui vengono inviati i dati: GET = "in chiaro" (in coda all' URL specificato nell'attributo ACTION ) POST = "nascosti" (all'interno dlel'oggetto che viene inviato al server)

a.a. 2004/05Tecnologie Web17 FORM HTML - III ACTION: è un URL che contiene il richiamo di unazione, cioè un programma; può essere, per es.: mailto:indirizzo-di- invia una allindirizzo specificato, con i dati del modulo una pagina ASP, PHP, JSP (cioè una pagina contenente un programma in grado di riceverle i dati del modulo e di decodificarli) una Servlet Java o uno Script CGI invia i dati del modulo ad un programma che è in grado di riceverli e decodificarli

a.a. 2004/05Tecnologie Web18 FORM HTML - IV I pulsanti: viene eseguita lazione specificata in ACTION vengono cancellati tutti i dati già inseriti

a.a. 2004/05Tecnologie Web19 FORM HTML - V Campi del modulo (ovvero le modalità per richiedere i dati):

a.a. 2004/05Tecnologie Web20 FORM HTML - VI fino a 5 anni da 6 a 11 anni... parametro nascosto che viene inviato al server senza che lutente lo veda

a.a. 2004/05Tecnologie Web21 Architettura logica e flusso dati HTTP request (POST) Applicazione Web FORM HTML Come ti chiami? Quanti anni hai? da 18 a 25 maria SERVLET … Print(Ciao, + nome); if (eta.equals(da18a25) { seleziona layout giovane} else if (eta.equals(piu60) { seleziona layout semplice} else { usa layout standard} … stampa il risultato su HTTP response DB … web server Web Container HTTP response

a.a. 2004/05Tecnologie Web22 Gestione di interazioni parallele HTTP request (POST) Applicazione Web Browser 1 Come ti chiami? Quanti anni hai? da 18 a 25 maria SERVLET … Print(Ciao, + nome); if (eta.equals(da18a25) { seleziona layout giovane} else if (eta.equals(piu60) { seleziona layout semplice} else { usa layout standard} … stampa il risultato su HTTP response DB … web server Web Container HTTP response Browser 2 Come ti chiami? Quanti anni hai? da 16 a 35 paolo … HTTP request (POST) HTTP response

a.a. 2004/05Tecnologie Web23 Sessioni utente e interazioni stateful - I I servizi accessibili da web prevedono generalmente interazioni complesse e il riconoscimento delle azioni eseguite dallutente come ununica sequenza. Es: –apri catalogo (automobili usate), visita pagina di prodotto (berline), visualizza dettagli di auto X (FIAT Marea, Alfa 156, Ford Mondeo, …) –acquista automobile X (carrello spesa) Scegli colore auto, cilindrata, … Scegli optionals Inserisci dati personali Inserisci dati carta di credito … serve un meccanismo per tracciare la sequenza di azioni effettuate dallo stesso browser durante linterazione

a.a. 2004/05Tecnologie Web24 Sessioni utente e interazioni stateful - II Sessione utente = "sessione di lavoro" tra l'applicazione e ogni singolo utente (il server, generalmente crea automaticamente un oggetto session per ogni utente che si connette all'applicazione) Se il protocollo utilizzato gestisce le sessioni utente (session tracking), il server riconosce richieste successive di stesso browser come parte di una sola interazione applicazione utente 1 utente 2 utente 3 sessione 1 sessione 2 sessione 3 ecc…

a.a. 2004/05Tecnologie Web25 Sessioni utente e interazioni stateful - III Stato = il server ricorda i dati relativi alle precedenti richieste effettuate durante la stessa sessione (può quindi rispondere alle richieste tenendo conto di quanto già fatto). Es: mantenimento carrello spesa NB: la gestione delle sessioni utente è necessaria per gestire stato, ma non sufficiente (per es: HTTP 1.1 supporta sessioni utente, ma non mantiene lo stato di interazione)

a.a. 2004/05Tecnologie Web26 Sessioni utente e interazioni stateful - IV Protocollo stateless –ogni richiesta utente è gestita separatamente il server non ha memoria delle precedenti richieste utente –es: HTTP 1.0 Protocollo stateful –permette di gestire risposte a richieste che dipendono dal contenuto e/o dai risultati di una richiesta precedente –gestisce un canale (virtuale) di comunicazione che permette di vedere richieste e risposte multiple come parte della stessa connessione tra client e server –es: FTP, telnet

a.a. 2004/05Tecnologie Web27 Tecniche di session tracking - I Basate sullo scambio di un token identificativo (sessionId) tra client (C) e server (S): C invia richiesta HTTP a S S risponde associando token univoco T a risposta C invia ulteriori richieste associando token T, che permette a S di riconoscere C server S client C risposta con token richiesta con token

a.a. 2004/05Tecnologie Web28 Tecniche di session tracking - II URL Rewriting –token inserito in coda allURL (come parametro) delle richieste eseguite dal client Hidden form fields –token inserito in campi nascosti delle form Cookies –token scritto in un cookie (file di testo memorizzato sul client e restituito al server ad ogni richiesta HTTP) Sessioni che usano Secure Socket Layer (SSL) –SSL usa il protocollo di scambio di messaggi crittografati HTTPS. Per stabilire connessioni, client e server generano delle session keys (chiavi simmetriche per crittografare e decrittare messaggi) che possono essere usate per identificare client e sessione utente

a.a. 2004/05Tecnologie Web29 Session tracking con Servlet Le servlet offrono un meccanismo automatico per session tracking e mantenimento dello stato dellinterazione Linterfaccia javax.servlet.HttpSession incapsula il concetto di sessione utente e il Web Container implementa HttpSession Linterfaccia HttpServletRequest offre il metodo getSession() per accedere alloggetto HttpSession associato alla richiesta utente corrente (HttpServletRequest) NB: Normalmente il session tracking è implementato utilizzando i cookies se il browser ha disabilitato i cookies il Web Container può utilizzare URL rewriting (ma bisogna invocare metodi specifici) NB: le sessioni utente devono scadere (timeout) per evitare di sovraccaricare il server nel caso in cui gli utenti non chiudano esplicitamente la sessione

a.a. 2004/05Tecnologie Web30 Mantenimento dello stato con Servlet Loggetto HttpServletRequest può contenere anche degli attributi associati alla sessione utente Si tratta di coppie (il valore può essere un oggetto complesso) Tali attributi sono usati per mantenere informazioni sullo stato della particolare sessione utente HttpServletRequest offre metodi per scrivere e leggere questi attributi –void setAttribute(String attrName, Object attr) : salva lattributo nelloggetto sessione –Object getAttribute(String attrName) : restituisce il valore associato al nome attrName nella sessione utente

a.a. 2004/05Tecnologie Web31 Interazione con database: JDBC

a.a. 2004/05Tecnologie Web32 Cos'è un database (relazionale)? I dati sono registrazioni della descrizione di una qualsiasi caratteristica della realtà, su un supporto che ne garantisca la conservazione, la comprensibilità e la reperibilità Una base di dati (database) è una collezione di dati organizzati in modo coerente, costruito con funzionalità ben precise, note già in fase di progettazione (esempi: rubrica telefonica personale, anagrafe, archivio di una biblioteca, archivio centrale del ministero delle finanze, segreteria studenti delluniversità, …) Ricordiamoci che… database

a.a. 2004/05Tecnologie Web33 Definizione della base di dati (DB relazionale): –quali informazioni –quali relazioni tra le informazioni Vari livelli nella definizione dei dati: Vista 1Vista 2Vista n Livello logico Livello fisico Livello concettuale Ricordiamoci che…

a.a. 2004/05Tecnologie Web34 Livello concettuale: Ha l'obiettivo di descrivere, a livello concettuale, la conoscenza sulla realtà che si vuole modellare (linguaggi di rappresentazione della conoscenza) Individuare le entità rilevanti, le loro proprietà (attributi)… … e le relazioni tra entità LIBRO N.invent Anno_ed. TitoloCasa_ed. Collocaz. Ripiano Scaffale scrive autorelibro (1:n) Ricordiamoci che… Autore

a.a. 2004/05Tecnologie Web35 Livello logico: Rappresentazione tabellare dei dati N.Inv AutoreTitolo Anno_edCasa_edCollocaz Tabella: LIBRI Ricordiamoci che…

a.a. 2004/05Tecnologie Web36 Interazione con un database (relazionale): Manipolazione dei dati: –inserimento di dati –cancellazione di dati –aggiornamento (update) –interrogazione Ogni operazione di accesso alla base di dati viene interpretata, analizzata ed eseguita dal DBMS (DataBase Management System) Ricordiamoci che… database DBMS

a.a. 2004/05Tecnologie Web37 Si utilizza un linguaggio appositamente studiato per "parlare" con i database (relazionali): SQL (Structured Query Language) Esempio Produce come risultato una tabella che contiene tutti gli attributi nella clausola SELECT, che soddisfano la condizione nella clausola WHERE nell'es: tutti i libri editi da Feltrinelli AutoreTitolo I.Allende S.Benni D.Voltolini Saltatempo Dieci Afrodita Ricordiamoci che… SELECT Autore, Titolo FROM Libri WHERE Casa_ed=Feltrinelli

a.a. 2004/05Tecnologie Web38 Accesso a database relazionali I produttori di RDBMS (Relational DBMS) offrono API (interfacce) per accedere ai dati gestiti dal DBMS Laccesso al database è basato su modello client-server il client accede al database mediante le API definite dai produttori RDBMS diversi hanno API diverse serve uno strumento per generalizzare laccesso, in modo da separare lapplicazione (business logic) dal livello dei dati (in modo che il passaggio ad un database diverso non crei problemi) Un Database Driver è uno strumento che ci permette di comunicare in modo uniforme con diversi RDBMS

a.a. 2004/05Tecnologie Web39 ODBC e JDBC ODBC (Open Database Connectivity) driver –creato inizialmente per offrire API standard per accesso SQL a piattaforme Microsoft Windows, è poi stato esteso ad altre piattaforme –offre un accesso uniforme a database relazionali eterogenei (installando lODBC driver specifico per ogni database) –definisce funzioni per accesso diretto ai dati (quindi non poi così standard) JDBC (Java DataBase Connectivity) driver offre uninterfaccia standardizzata tra applicazioni Java e database relazionali

a.a. 2004/05Tecnologie Web40 JDBC - I JDBC API (java.sql, incluso in J2SE) supporta lesecuzione di query SQL e lanalisi dei risultati delle query Offre metodi per accedere a RDBMS SQL-compliant, astraendo da: –dettagli implementativi del database (MS Access? Oracle? …?) e dei suoi API specifici –dettagli di comunicazione con i database specifici Permette ad una singola applicazione di connettersi a più database diversi, anche eterogenei (attraverso database driver diversi) JDBC basato su –linguaggio di interrogazione SQL –interfaccia di comunicazione X/Open CLI

a.a. 2004/05Tecnologie Web41 JDBC - II X/Open CLI (Call Level Interface) interfaccia (API) standard per laccesso a database relazionali, definita originariamente per ODBC indipendente da piattaforma e da database basata su idea di –includere query SQL in unapplicazione scritta in un linguaggio ad alto livello (per es. Java) –pre-processare le query per generare chiamate di funzioni native del database

a.a. 2004/05Tecnologie Web42 JDBC - III JDBC è stato sviluppato partendo da specifiche di driver ODBC esistenti e di CLI, per identificare caratteristiche comuni e offrire interfaccia di comunicazione –compatibile con tutti i driver –facilmente implementabile in Java Risultato: API per laccesso a database che possono essere: –implementate su driver ODBC esistenti (prime versioni) –direttamente integrate nel database, senza passare attraverso ODBC (oggi molto diffuso) Tipi di connessioni JDBC: JDBC-ODBC Bridge Part Java, part native driver Intermediate Database Access Server Pure Java Drivers

a.a. 2004/05Tecnologie Web43 JDBC-ODBC Bridge Java Application Data Source JDBC API JDBC-ODBC Bridge ODBC API ODBC Layer JDBC driver : traduce le chiamate JDBC in chiamate ODBC invia chiamate ODBC al database (usando librerie ODBC) delega al database lesecuzione delle chiamate poco efficiente per livelli multipli e traduzioni intermedie il client che gestisce lapplicazione deve installare JDBC-ODBC Bridge API e ODBC driver Processo 1 Processo 2

a.a. 2004/05Tecnologie Web44 Part Java, part native driver Java Application Data Source JDBC API JDBC Driver Vendor specific API JDBC driver traduce le chiamate JDBC in chiamate specifiche per il database lI database processa le richieste e invia i risultati attraverso API specifiche (che inviano i risultati al JDBC driver) JDBC driver traduce risultati in JDBC standard e invia ad applicazione + efficiente (- livelli di traduzione) il client deve installare driver e API nativi del DB

a.a. 2004/05Tecnologie Web45 Intermediate database access server (net-protocol all-Java driver) Java Application Data Source JDBC API JDBC Driver Driver Server intermedio connette più client Java a più DB server: JDBC Driver Server fa da gateway verso i server dei database lapplicazione invia la richiesta JDBC via JDBC Driver al Driver Server Driver Server completa la richiesta attraverso il native driver JDBC Driver Server nasconde i dettagli delle connessioni ai database server il protocollo di comunicazione col Driver Server è specifico, ma il Driver Server può usare protocolli diversi per comunicare con DB diversi JDBC Driver Server Native Driver

a.a. 2004/05Tecnologie Web46 Pure Java Drivers Java Application Data Source JDBC API JDBC Driver Il JDBC Driver converte le chiamate JDBC in chiamate in rete dirette utilizzando protocolli di rete specifici del database (socket) + efficiente semplice da utilizzare perchè non richiede librerie o software speciali I principali produttori di database offrono JDBC Driver puri per accedere ai propri DB Una lista di JDBC driver:

a.a. 2004/05Tecnologie Web47 Architettura di JDBC - I Application Driver Manager JDBC Specific Driver Connection Statement ResultSet 1) lapplicazione installa il Driver Mgr e istanzia uno o più JDBC drivers (specifici per DB) 3) Tabelle risultato contenute in oggetti ResultSet interrogabili JDBC Specific Driver Connection Statement ResultSet 2) lapplicazione chiede un oggetto Connection al Driver Mgr e lo usa per comunicare con il DB (via query SQL)

a.a. 2004/05Tecnologie Web48 Architettura di JDBC - II Driver Manager (java.sql.DriverManager): classe che permette di installare i driver per laccesso ai database JDBC Specific Driver (java.sql.Driver): interfaccia –Venditori di DBMS implementano Driver (definendo I metodi di accesso al loro database) –Il Driver JDBC traduce le chiamate JDBC in invocazioni basate su API specifiche del database Software delle applicazioni indipendente dal particolare database (perché DriverManager e applicazione usano le interfacce, non le implementazioni) Connection (java.sql.Connection): interfaccia che permette di inviare query SQL (interfaccia java.sql.Statement) e di leggere i risultati (interfaccia java.sql.ResultSet); i produttori di database implementano linterfaccia

a.a. 2004/05Tecnologie Web49 JDBC: tipi di dati JDBC offre un insieme di tipi di dati corrispondenti ai tipi di dati SQL e Java (classe java.sql.Types). Per es: