A.a. 2004/05Tecnologie Web1 Applicazioni Web server-side: Java Servlet.
-
Upload
filipo-zanella -
Category
Documents
-
view
226 -
download
2
Transcript of A.a. 2004/05Tecnologie Web1 Applicazioni Web server-side: Java Servlet.
a.a. 2004/05 Tecnologie Web 1
Applicazioni Web server-side: Java Servlet
a.a. 2004/05 Tecnologie Web 2
Ricordiamoci che…
• Il Web è basato su un’architettura client-server• Server = processo (programma in esecuzione) che
– resta “in ascolto” (in attesa di richieste) su una macchina server
– ad ogni richiesta esegue un’azione 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/05 Tecnologie Web 3
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:
http://www.di.unito.it/people/goy.html
• La visualizzazione, sul client, di una pagina dinamica, frutto di un’elaborazione precedentemente avvenuta sul server: http://www.di.unito.it/negozio/prezzo.jsp
• L’esecuzione, sul server, di un programma:http://www.di.unito.it/negozio/calcolaPrezzo
In questi ultimi due casi è possibile includere nella richiesta dei dati (parametri) su cui la pagina dinamica o il programma potranno lavorare:http://www.di.unito.it/negozio/prezzo.jsp?prec=100&spesa=25http://www.di.unito.it/ negozio/calcolaPrezzo?prec=100&spesa=25
HTTP request: URL
a.a. 2004/05 Tecnologie Web 4
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 all’URL sono visibili nella barra dell’indirizzo del browser!!! Per es: http://www.di.unito.it/negozio/prezzo.jsp?prec=100&spesa=25http://www.di.unito.it/ 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 all’interno del
messaggio di richiesta (e non in coda all’URL) e quindi NON sono visibili all’utente
• Può inviare al server quantità “illimitata” di dati
a.a. 2004/05 Tecnologie Web 5
Applicazioni web server-side
In generale un’applicazione web (server-side) è composta di molte risorse, statiche (es. pagine HTML) o dinamiche (programmi eseguibili)I programmi che appartengono ad un’applicazione 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/05 Tecnologie Web 6
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/05 Tecnologie Web 7
Tecnologie server-side: Java ServletJava 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” (l’esecuzione 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/05 Tecnologie Web 8
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 dell’interazione)
– permettono di integrare la logica dell’applicazione 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/05 Tecnologie Web 9
Java Servlet: Web Container - I
Per costruire un’applicazione web basata sull’uso 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)
contenutistatici
(pag. html, immagini)
Web Container
HTTPServer
client(browser)
HTTP request
HTTP response
a.a. 2004/05 Tecnologie Web 10
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/05 Tecnologie Web 11
Applicazioni web: ambiente Java
Java servletJava servletJava servletJava servlet
JSPJSP
Java classes,archives
Java classes,archives
Java classes,archives
Deployment descriptor (web.xml)
Applicazione web
Java servletJava servletJava servletJava servlet
JSPJSP
Java classes,archives
Java classes,archives
Java classes,archives
Deployment descriptor (web.xml)
Applicazione web
Web Container (es. Jakarta Tomcat)
sweb5 sweb8
servletcontext
servletcontext
a.a. 2004/05 Tecnologie Web 12
Java Servlet: invocazione - IInvocazione di un’applicazione basata su Java Servlet
Web Container
webserver
browser
Servlet/JSPinstances
Applicazione web
HTTPrequest
1: il web browser inviauna richiesta
2: il web server identifical’applicazione (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 unaservlet, identifica la servlet
instance e delega la richiesta (passa i dati in HTTP request e
l’oggetto HTTP response, in cui si aspetta il risultato)
sweb5
a.a. 2004/05 Tecnologie Web 13
Java Servlet: invocazione - II
Web Container
webserver
browser
Servlet/JSPinstances
Applicazione web
HTTPresponse
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/05 Tecnologie Web 14
Java Servlet: invocazione - III
L’invocazione di una servlet può essere fatta da:
• Form HTML, utilizzando sia POST sia GET
• Link (URL con parametri):http://www.di.unito.it/ negozio/calcolaPrezzo?prec=100&spesa=25in 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/05 Tecnologie Web 15
FORM HTML - I
a.a. 2004/05 Tecnologie Web 16
FORM HTML - II
<FORM METHOD = "GET/POST" ACTION = cosa-fare>
... campi del modulo ...
<INPUT TYPE="SUBMIT" VALUE="Invia"><INPUT TYPE="RESET" VALUE="Cancella">
</FORM>
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/05 Tecnologie Web 17
FORM HTML - III
ACTION: è un URL che contiene il richiamo di un’azione, cioè un programma; può essere, per es.: mailto:indirizzo-di-email invia una email
all’indirizzo 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/05 Tecnologie Web 18
FORM HTML - IV
I pulsanti:<INPUT TYPE="SUBMIT" VALUE="Invia">
viene eseguita l’azione specificata in ACTION
<INPUT TYPE="RESET" VALUE="Cancella">
vengono cancellati tutti i dati già inseriti
a.a. 2004/05 Tecnologie Web 19
FORM HTML - V
Campi del modulo (ovvero le modalità per richiedere i dati):
<TEXTAREA NAME="commento" ROWS="10" COLS="20"></TEXTAREA>
<INPUT TYPE="TEXT" NAME="nome" VALUE="" SIZE="20">
<INPUT TYPE="CHECKBOX" NAME="interessi" VALUE="">
<INPUT TYPE="RADIO" NAME="partec" VALUE="">
a.a. 2004/05 Tecnologie Web 20
FORM HTML - VI
<SELECT NAME="eta"><OPTION VALUE="fino5">fino a 5 anni</OPTION><OPTION VALUE=“da6a11">da 6 a 11 anni</OPTION> ...
</SELECT>
<INPUT TYPE="HIDDEN" NAME=“id" VALUE="35FF6">parametro nascosto che viene inviato al server senza che l’utentelo veda
a.a. 2004/05 Tecnologie Web 21
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
…
webserver
Web Container
HTTP response
a.a. 2004/05 Tecnologie Web 22
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
…
webserver
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/05 Tecnologie Web 23
Sessioni utente e interazioni stateful - I• I servizi accessibili da web prevedono generalmente
interazioni complesse e il riconoscimento delle azioni eseguite dall’utente come un’unica 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 l’interazione
a.a. 2004/05 Tecnologie Web 24
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 utenteche 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… ecc…
a.a. 2004/05 Tecnologie Web 25
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/05 Tecnologie Web 26
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/05 Tecnologie Web 27
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
serverS
clientCrisposta con token
richiesta con token
a.a. 2004/05 Tecnologie Web 28
Tecniche di session tracking - II • URL Rewriting
– token inserito in coda all’URL (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/05 Tecnologie Web 29
Session tracking con Servlet
Le servlet offrono un meccanismo automatico per sessiontracking e mantenimento dello stato dell’interazione• L’interfaccia javax.servlet.HttpSession incapsula il
concetto di sessione utente e il Web Container implementa HttpSession
• L’interfaccia HttpServletRequest offre il metodo getSession() per accedere all’oggetto 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/05 Tecnologie Web 30
Mantenimento dello stato con Servlet
• L’oggetto HttpServletRequest può contenere anche degli attributi associati alla sessione utente
• Si tratta di coppie <nome, valore> (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 l’attributo <attrName, attr>nell’oggetto sessione– Object getAttribute(String attrName): restituisce
il valore associato al nome attrName nella sessione utente
a.a. 2004/05 Tecnologie Web 31
Interazione con database: JDBC
a.a. 2004/05 Tecnologie Web 32
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 dell’università, …)
Ricordiamoci che…
database
a.a. 2004/05 Tecnologie Web 33
Definizione della base di dati (DB relazionale): – quali informazioni– quali relazioni tra le informazioni
Vari livelli nella definizione dei dati:
Vista 1 Vista 2 Vista n
Livello logico
Livello fisico
Livello concettuale
Ricordiamoci che…
a.a. 2004/05 Tecnologie Web 34
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
scriveautore libro(1:n)
Ricordiamoci che…
Autore
a.a. 2004/05 Tecnologie Web 35
Livello logico:
• Rappresentazione tabellare dei dati
N.Inv Autore Titolo Anno_ed Casa_ed Collocaz
Tabella: LIBRI
Ricordiamoci che…
a.a. 2004/05 Tecnologie Web 36
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 vieneinterpretata, analizzata ed eseguita dal DBMS (DataBase Management System)
Ricordiamoci che…
database
DB
MS
a.a. 2004/05 Tecnologie Web 37
Si utilizza un linguaggio appositamente studiato per "parlare" con i database (relazionali): SQL (Structured Query Language)
• Esempio
• Produce come risultato una tabellache contiene tutti gli attributi nella clausola SELECT, che soddisfano la condizione nella clausola WHERE
nell'es: tutti i libri editi da Feltrinelli
Autore Titolo
I.Allende
S.Benni
D.Voltolini
Saltatempo
Dieci
Afrodita
Ricordiamoci che…
SELECT Autore, TitoloFROM LibriWHERE Casa_ed=Feltrinelli
a.a. 2004/05 Tecnologie Web 38
Accesso a database relazionali
• I produttori di RDBMS (Relational DBMS) offrono API (interfacce) per accedere ai dati gestiti dal DBMS
• L’accesso 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 l’accesso, in modo da separare l’applicazione (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/05 Tecnologie Web 39
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 l’ODBC driver specifico per ogni database)
– definisce funzioni per accesso diretto ai dati (quindi non poi così standard)
• JDBC (Java DataBase Connectivity) driver offre un’interfaccia standardizzata tra applicazioni Java e database relazionali
a.a. 2004/05 Tecnologie Web 40
JDBC - I
• JDBC API (java.sql, incluso in J2SE) supporta l’esecuzione di query SQL e l’analisi 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/05 Tecnologie Web 41
JDBC - IIX/Open CLI (Call Level Interface)
• interfaccia (API) standard per l’accesso a database relazionali, definita originariamente per ODBC
• indipendente da piattaforma e da database
• basata su idea di – includere query SQL in un’applicazione 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/05 Tecnologie Web 42
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 l’accesso 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/05 Tecnologie Web 43
JDBC-ODBC Bridge
Java Application
DataSourceJDBC
API
JDBC-ODBCBridge
ODBCAPI
ODBCLayer
JDBC driver : • traduce le chiamate JDBC in chiamate ODBC• invia chiamate ODBC al database (usando librerie ODBC)• delega al database l’esecuzione delle chiamate
poco efficiente per livelli multipli e traduzioni intermedie il client che gestisce l’applicazione deve installare JDBC-ODBC Bridge API e ODBC driver
Processo 1
Processo 2
a.a. 2004/05 Tecnologie Web 44
Part Java, part native driver
Java Application
DataSource
JDBCAPI
JDBC Driver
Vendorspecific
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/05 Tecnologie Web 45
Intermediate database access server(net-protocol all-Java driver)
Java ApplicationData
SourceJDBCAPI
JDBC Driver
Driver Server intermedio connette più client Java a più DB server:• JDBC Driver Server fa da gateway verso i server dei database• l’applicazione 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
JDBCDriverServer
Native Driver
a.a. 2004/05 Tecnologie Web 46
Pure Java Drivers
Java ApplicationData
SourceJDBCAPI 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 DBUna lista di JDBC driver: http://industry.java.sun.com/products/jdbc/drivers/
a.a. 2004/05 Tecnologie Web 47
Architettura di JDBC - I
Application
Driver Manager
JDBC Specific Driver
Connection
Statement
ResultSet
1) l’applicazioneinstalla il Driver Mgr e istanzia uno o più
JDBC drivers(specifici per DB)
3) Tabelle risultato contenutein oggetti ResultSet interrogabili
JDBC Specific Driver
Connection
Statement
ResultSet
2) l’applicazionechiede un oggetto
Connection al Driver Mgr e lo usa per
comunicare con il DB (via query SQL)
a.a. 2004/05 Tecnologie Web 48
Architettura di JDBC - II• Driver Manager (java.sql.DriverManager): classe che
permette di installare i driver per l’accesso 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 l’interfaccia
a.a. 2004/05 Tecnologie Web 49
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:
JDBC Type Purpose SQL Type Java Type
DATALINK Rappresenta SQL DATALINK DATALINK java.net.URL
DATE Data strutturata come giorno,mese ed anno
DATE java.sql.Date
VARCHAR Stringa di lunghezza variabile VARCHAR String
INTEGER interi a 32-bit con segno INTEGER int
NULL Rappresenta NULL values NULL null per oggetti java, 0 pernumeri, false per boolean
JAVA_OBJECT Memorizzare oggetti Java --- Object
DOUBLE floating-point, doppiaprecisione con mantissa a 15 bit
DOUBLEPRECISION
double