1 Basi di dati e Web Prof. Stefano Paraboschi Prof. Barbara Pernici.
-
Upload
rinaldo-luciani -
Category
Documents
-
view
221 -
download
1
Transcript of 1 Basi di dati e Web Prof. Stefano Paraboschi Prof. Barbara Pernici.
1
Basi di dati e Web
Prof. Stefano Paraboschi
Prof. Barbara Pernici
2
GATEWAY
• I server Web possono richiamare qualunque programma– trasmettendo anche eventuali parametri
• collegamento tra ambiente web e altri ambienti
• chiamata dei programmi: http, URL, eventuali parametri
3
Web server e file
Web server
FILE SYSTEM - pagine statiche
A.html
B.html C.html
D.html
Cgi-bin
Xyz.exe abc.exe
Pagine eseguibili
CGIHTTP
Web client (browser)
4
CCommon ommon GGateway ateway IInterfacenterface
• Meccanismo che consente al Web Server Meccanismo che consente al Web Server di eseguire applicazioni esterne in grado di eseguire applicazioni esterne in grado di creare pagine di creare pagine dinamicamentedinamicamente
5
Caratteristiche di CGI Caratteristiche di CGI • Non e’: Non e’:
•un linguaggio di programmazioneun linguaggio di programmazione•un protocollo di comunicazioneun protocollo di comunicazione
• Definisce solo un insieme di Definisce solo un insieme di variabili di variabili di ambienteambiente utili alla applicazione (ad es. utili alla applicazione (ad es. parametri inviati dal client)parametri inviati dal client)
%&£$$pp*&£$
6
EsecuzioneEsecuzione
1.1. Il server riconosce dall’URl che la risorsa richiesta dal cliente e’ un eseguibile
http://mio.server.web/cgi-bin/xyz.exe
7
EsecuzioneEsecuzione2.2. Il server decodifica i parametri inviati dal cliente e riempie le variabili d’ambiente
es: request_method, query_string, content_length, content_type
http://mio.server.web/cgi-bin/xyz.exe?#^@@
#^@@P$&*£
8
EsecuzioneEsecuzione
3.3. Il server lancia in esecuzione l’applicazione richiesta
#^@@P$&*£
9
EsecuzioneEsecuzione
4.4. L L’applicazione stampa la sua risposta sullo standard output(la risposta puo’ essere una pagina web o di altro tipo - il tipo e’ dichiarato nella risposta)
10
EsecuzioneEsecuzione
5.5. Il server ridireziona lo standard output sulla rete e quindi verso il client
11
Invio di parametri a un programma Invio di parametri a un programma CGICGI
• Il client puo’ usare due metodi:•GET•POST
•GET: i parametri sono codificati nell’URLhttp://www.mioserver.it/cgi-bin/xyz?par=val•POST : i parametri sono spediti al server separatamente, usando il body del messaggio di richiesta HTTP•NB: il metodo POST richiede l’uso di un costrutto HTML chiamato FORM
12
Form (moduli)• Input dall’utente• Come: con parametri (<INPUT type=):
– text boxes (text)– buttons (submit)– radio buttons (radio)– password (password)– hidden (valore fisso, non visibile all’utente)
• i parametri hanno un nome a cui si associa un valore compilando la form
• submit: si invia il contenuto del modulo al server come parte di un’altra richiesta http di una pagina speciale (eseguibile)
13
FORM HTMLFORM HTML
Esempio: invio al server il nome dell’utente<form action=http://www.mysrvr.it/cgi-bin/xyz.exe method=post><p>Dimmi il tuo nome:<input type=“text” name=“chisei” ></p><input type=“submit” ></form>
14
FORM HTMLFORM HTML
15
FORM HTML<HTML>
<BODY>
<form action=http://www.mysrvr.it/cgi-bin/xyz.exe
method=post>
<p>Dimmi il tuo nome:
<input type="text" name=“chisei” ></p>
<input type="hidden" name=“sessione” value="123" >
<p>Password:
<input type="password" name=“pwd” ></p>
<p>
<input type="radio" name="tipo" value="doc">docente</p>
<p>
<input type="radio" name="tipo" value="stud">studente</p><input type="submit" value="VAI">
<input type="reset">
</form>
</BODY>
</HTML>
16
17
Struttura di un programma CGIStruttura di un programma CGI
leggi le variabili d’ambiente
leggi le variabili d’ambiente
stampa codice HTML
stampa codice HTML
elaboraelabora
stampa intestazioneMIME
stampa intestazioneMIME
cout << “Content-type: text/html”<< endl << endl;
18
Decodifica dei parametriDecodifica dei parametri
leggi la variabileRequest_methodleggi la variabileRequest_method
leggi la variabileQuery_string
leggi la variabileQuery_string
GET
leggi la variabilecontent_length
leggi la variabilecontent_length
leggi content_lengthcaratteri da
standard input
leggi content_lengthcaratteri da
standard input
POST
Valore?
19
Programmi eseguibili
• per selezionare pagine
• Per accedere a pagine riservate
• per accedere a servizi– per accedere a basi di dati
20
A Web page (containing a list of links)
21
A “unique” page-scheme: ProfessorListPage
ProfessorListPage
ProfessorListNameToProfP
22
An ADM Scheme
ProfessorListPage
ProfessorListNameToProfP
ProfessorPage
NamePositionAddress
EMailResearchList
AreaToResP
23
Heterogeneous Union and Forms
24
Heterogeneous Union and Forms in ADM
ProfessorListPage
ProfessorListName
ToProfP
ProfessorPageNamePosition
Address
EMailResearchList
Area
ToResP
Name
Submit
U
SearchProfPage
25
Maintenance
• The Schemes help designers to maintain the hypertext structure
• Maintenance activities correspond to apply scheme transformations:– introduce multilevel lists– introduce forms– split pages– ...
26
Maintenance: example
27
Tecnologie per l’integrazione Web/Basi di dati
28
Web & basi di datiWeb & basi di dati
Obiettivi::•ottenere la generazione dinamica di ottenere la generazione dinamica di pagine a partire da dati contenuti in una pagine a partire da dati contenuti in una base di datibase di dati•sfruttare i pregi di Web e basi di dati, sfruttare i pregi di Web e basi di dati, aggirandone i difettiaggirandone i difetti
29
Pregi e difetti di basi di dati e WebPregi e difetti di basi di dati e Web
pro contropro contro
•semplicesemplice•portabileportabile•a basso costoa basso costo•indipendente indipendente dalle interfaccedalle interfacce•ipermedialeipermediale
• basato su filebasato su file• statico statico
•modelli dei datimodelli dei dati•linguaggi di linguaggi di interrogazione interrogazione •funzioni di funzioni di amministazioneamministazione
• complessecomplesse• proprietarieproprietarie• navigazione e navigazione e
presentazione presentazione assentiassenti
WebWeb
basi basi di datidi dati
30
Programma CGIProgramma CGI
Web serverWeb server
CGICGI
gatewaygateway gatewaygateway
DBMSDBMS
via DBMS API,via DBMS API,embedded SQL,embedded SQL,
ODBC ...ODBC ...
31
InvocazioneInvocazione• Il cliente specifica nell’URL il nome del programma da eseguire•Il programma deve stare in una posizione precisa (di solito il direttorio cgi-bin)
http://mio.server.web/cgi-bin/xyz.exe
root
cgi-bin
xyz.exe
32
Esempio di CGI per accesso a DB
main(char Cognome[]){ char Nome[20], Dipartimento[20], Citta[20]; char Indirizzo[60]; int Age, Stipendio; $ open connection to NewCompanyDB $ select Nome, Dipart, Citta, Indirizzo, Stipendio into :Nome, :Dipart, :Citta, :Indirizzo, :Stipendio from Impiegato I, Sede S where I.Sede = S.Citta and Cognome = :Cognome ; $ close connection ...
33
if (sqlcode == 0){ printf("<html>\n<head><title> %s %s",Nome,Cognome, "</title></head>\n<body>\n"); printf("<H3> %s %s",Nome,Cognome,"</H3>\n"); printf("<table>\n"); printf("<tr><td><em>Dipartimento</em>:</td><td>%s", Dipartimento,"</td></tr>\n"); printf("<tr><td><em>Citta</em>:</td><td>%s",Citta,“ </td></tr>\n"); printf("<tr><td><em>Indirizzo</em>:</td><td>%s", Indirizzo,"</td></tr>\n"); printf("<tr><td><em>Stipendio</em>:</td><td>%u", Stipendio,"</td></tr>\n"); printf("<tr><td><a href=\"/cgi-bin/ProjOfEmp?Cognome=%s", Cognome,"\">Progetti in
corso</a></td><td> </td></tr>\n"); printf("</table>\n</body>\n</html>"); } else { printf("<html>\n<head><title>Error</title></head>\n<body>\n"); printf("niente impiegato %s\n",Cognome,"</body>\n</html>"); }}
34
Programma CGI per l’accesso a DBProgramma CGI per l’accesso a DB
• PRO– portabilità: usa solo standard aperti: URL,
HTTP, CGI, HTML (attenzione però all’accesso al DB)
• CONTRO
– prestazioni: creazione di un sotto-processo per ogni richiesta
– aperture e chiusure ripetute della connessione con la base di dati
35
Form e CGI come interfacce di applicazioni
• Per applicazioni di qualsiasi tipo
• Problemi:– identificazione utente, sicurezza– affidabilita’, transazioni– sessioni– numero di processi attivati, operazioni di
apertura e chiusura
36
Simulazione sessioni
• HTTP consente di richiedere una pagina alla volta
• Simulazione di sessioni:– con hidden parameters nelle form– con cookie (max 4KB) (inviato
nell’intestazione della risposta e memorizzato come parte della configurazione del browser) e dizionario stato clienti
37
Processo CGI: FAST-CGIProcesso CGI: FAST-CGIhttp://www.fastcgi.com
• Il web server genera il processo fast-cgi in fase di inizializzazione
• Il processo esegue una routine di inizializzazione e si pone in attesa
• Ad ogni richiesta, il web server apre una connessione verso il processo fast-cgi
• Il processo genera output sulla connessione http con il client passatagli dal server http
• Il processo fast-cgi chiude la connessione e rimane in attesa di nuove connessioni
38
FAST-CGI: vantaggiFAST-CGI: vantaggi
• Migliori prestazioni: creazione di processi fast-cgi solo in fase di inizializzazione
• Mantenimento dello stato: la persistenza del processo fast-cgi consente di superare la natura stateless di http
• Disponibilita’: distribuito gratuitamente da Open Market come fast-cgi library
39
Applicazione Applicazione serverserver
dispatcherdispatcher
Processo CGIProcesso CGI
DBMSDBMS
Web serverWeb server
CGICGI
dispatcherdispatcher
gatewaygateway
40
Processo CGIProcesso CGI
• PRO– evita apertura e chiusura della connessione ad ogni
richiesta– sfrutta le ottimizzazioni del DBMS– basato su standard CGI
• CONTRO
– prestazioni: tempo di commutazione tra processi diversi (dispatcher - server)
– complessita’ realizzativa dell’interfaccia tra dispatcher e applicazione server
41
GATEWAYGATEWAY
Gateway Web-base di datiGateway Web-base di dati
CLIENTCLIENT
DBMSDBMSHTTP HTTP serverserver
42
Una gerarchia di soluzioniUna gerarchia di soluzioni
GatewayGateway
su clientsu client su Serversu Server
estensioneestensioneesternaesterna
basato su basato su APIAPI
estensioneestensioneinternainterna
proprietarioproprietario
processo processo CGICGI
programmaprogrammaCGI CGI
basato su basato su CGICGI
43
Architetture di servizi on linebasati su Web
• Architettura di base
• clienti dinamici
• web applications
• soluzioni complesse
44
Architettura di base
BROWSER WEB SERVER
LOCAL FILE
SYSTEM
45
Clienti dinamiciscripting lato client
BROWSER
HTML
Script
Compiled modules
DOMDOM
46
Applicazioni su web (server side)
BROWSER
WEB SERVER
DATABASEJAVA SERVLET, API
ASP
JSP
PHPScripted page
HTML page
Scripting lato server
47
Applicazioni complesse:un esempio di modulo intelligente
client
CAP
Web server
Richiesta form
Risposta
3 minuti
Risposta con form con inclusione script per completare citta’ da CAP
48
CAP
Web server
Sottomissione form invocata da script Java
Risposta
3 secondi
Risposta con form ricostruito con completamento citta’ da CAP
Seconda soluzione
CAP
00198
00198ROMA
49
Web server
L’oggetto comunica direttamente con l’application server
Risposta
< sec
Oggetto distribuito che comunica direttamente con un oggetto sul lato server e restituisce la citta’ dato il CAP
Terza soluzione
CAP
00198
Application server
50
Server APIServer API
Web Web serverserver
DBMSDBMS
GatewayGateway
APIAPI API = interfaccia per estendere il servercon servizi non standard
51
Server APIServer API
• PRO– efficienza: il gateway e’ nello stesso processo
del Web server (es. e’ una libreria collegata dinamicamente)
– ancora parzialmente basato su standard aperti (URL, HTTP, HTML)
• CONTRO
– dipendenza da API proprietarie (NSAPI, ISAPI ) non standardizzate
52
Server ProprietarioServer Proprietario
Web Web serverserver
DBMSDBMS
GatewayGateway Costruito dal venditoreCostruito dal venditoredel Web server o DBMSdel Web server o DBMS
53
Server Proprietario Server Proprietario
• PRO– efficienza: il server Web diventa una
applicazione cliente della base di dati• CONTRO
– dipendenza dallo specifico Web Server e DBMS (a meno che il gateway non utilizzi prodotti di connettivita’ come ODBC)
54
Java ServletJava Servlethttp://java.sun.com/products/servlet/index.html
• Differenze rispetto a fast-cgi:– protocollo basato su NCGI, versione
semplificata di fast-cgi– applicazioni (servlet) scritte in Java – servlet eseguite nello stesso processo del
web server, per minor carico di comunicazione interprocesso
55
Java Servlet: vantaggiJava Servlet: vantaggi• Indipendenza dalla piattaforma grazie a Java• Sicurezza gestita mediante Security Manager
della JVM• Gestione degli errori con il meccanismo delle
eccezioni Java• Disponibilita’: distribuzione gratuita di Java
Servlet Development Kit contenente la libreria Java servlet
• Servlet Status• Introdotto nel 1995
• Version 2.1 JSDK (ServletRunner) disponibile
56
Servlet+JDBC
• Uso di JDBC a lato client è oneroso:– caricamento dei driver– traffico di spedizione dati
• Uso di dispatcher e processo CGI ottimizza l’accesso ma è difficile da programmare
• Soluzione: uso di servlet+JDBC
57
Dispatcher con i Servlet
Servlet
DBMSengine
Database
JDBC+SQL
Web Server
JVM
Dispatcher
ApplicationServer
58
Server-side scripting
• CGI, FastCGI, Java Servlet sono architetture general-purpose per eseguire applicazioni via HTTP
• Sono complesse da programmare
• Server-side scripting: una soluzione più semplice per produrre testo marcato in modo dinamico a lato server
59
Client-side scripting• Il codice script è interpretato dal
browser
+ marcatura &+ marcatura &scripting scripting
e componentie componenti
<HTML> <HTML> ……..</HTML> </HTML> <script> <script> ……......</script></script>
contenutocontenuto
testotesto
Ciao!Ciao!Ciao!Ciao!
TextboxTextbox
pagina interattivapagina interattiva
60
Server-side scripting• Il codice script è interpretato dal server
• Il browser riceve HTML puro
<HTML> <HTML> <BODY><BODY> … …..</BODY></BODY></HTML> </HTML>
<HTML> <HTML> ……..</HTML> </HTML> <script> <script> ……......</script></script>
Template: testo+script da interpretare sul server
61
1
Flusso dei messaggiFlusso dei messaggi
BROWSER
SERVER
DATABASE
3
5
24
6
7
8
1. L’utente richiede una pagina
2. Il server preleva la pagina
3. Il server passa il file al browser
4. L’utente compila la form e la passa al server
5. Il server esegue il codice ASP
6. Il file ASP comporta l’accesso ad un database
7. L’esecuzione ASP genera una pagina HTML
8. Il server invia la pagina HTML al browser
62
Active Server PagesActive Server Pages Architettura server-side scripting Architettura server-side scripting
proprietaria proprietaria
Rilasciate da Microsoft a partire dalla Rilasciate da Microsoft a partire dalla versione 3.0 di IISversione 3.0 di IIS
Linguaggio di scripting di default Linguaggio di scripting di default VBScriptVBScript
Componenti server-side ActiveX, COM, Componenti server-side ActiveX, COM, DCOM, JavaBeansDCOM, JavaBeans
Microsoft Active Server Pages (ASP)
63
Concetti GeneraliASP è un ambiente di sviluppo che permette di creare script “lato server” all’interno di documenti HTML, consentendo di realizzare applicazioni Web dinamiche e interattive Web Server
Active ServerPages
HTTPRequest
HTTPResponse
Browser
Requisiti minimi• Microsoft Internet Information Server versione 3.0 su Windows NT Server• Microsoft Peer Web Services versione 3.0 su Windows NT Workstation• Microsoft Personal Web Server su Windows 9x
64
Un file .asp contiene una combinazione di:Un file .asp contiene una combinazione di: TestoTesto Tag HTMLTag HTML Comandi ScriptComandi Script
Si ottiene un file Si ottiene un file .asp.asp anche semplicemente anche semplicemente
ridenominando un file ridenominando un file .html.html o o .htm.htm
MS IIS mette a disposizione un ambiente per MS IIS mette a disposizione un ambiente per
processare gli script (interprete VB)processare gli script (interprete VB)
File ASP
65
Delimitatori ASPDelimitatori ASP <% . . . . . . %> Comandi Server-side scripting. <% . . . . . . %> Comandi Server-side scripting.
Per esempio: Per esempio: response.write()response.write()
<%= . . . . . .%> Espressioni da valutare<%= . . . . . .%> Espressioni da valutare
ASP: sintassi
Esempio 1
<%If Time >=#12:00:00 AM# And Time < #12:00:00 PM# Then
Greeting = “Good Morning”Else
Greeting = “Hello”End if%>
Esempio 2
<FONT COLOR=”GREEN”><%= greeting %></FONT>
66
Oggetti server-side• Request object
– METODI: querystring, form, cookies
• Session object• Application object
– METODI: lock, unlock
• Response object– METODI: write, redirect, end, flush, cookies– PROPRIETÀ: buffer, cookies
• Server object– METODI: createobject, mappath, URLencode,
HTMLencode– PROPRIETÀ: scripttimeout
67
Indipendenza dal tipo di browser utilizzatoIndipendenza dal tipo di browser utilizzato Il browser vede solamente pagine HTMLIl browser vede solamente pagine HTML All’utente non sono necessari programmi proprietari All’utente non sono necessari programmi proprietari
o estensioni del browsero estensioni del browser
Facilità di apprendimento e utilizzoFacilità di apprendimento e utilizzo
Oggetti di utilità Oggetti di utilità
Nasconde la presenza di programmi script agli Nasconde la presenza di programmi script agli
utenti e ad eventuali hackerutenti e ad eventuali hacker
Consente un collegamento semplice ed Consente un collegamento semplice ed
efficiente a qualsiasi database via ADOefficiente a qualsiasi database via ADO
Vantaggi di ASP
68
Accesso a database con ASPAccesso a database con ASP
• Esempio di server proprietario (Microsoft)
• Accesso semplice ed efficiente
• Utilizzo di componenti Active Data Object (ADO)
• Accesso tramite interfaccia ODBC e linguaggio SQL
69
Modello ADO• Connection: oggetto che descrive una
connessione con la base di dati– open, close, ...
• Command: oggetto che descrive la query da eseguire
• execute..
• RecordSet: oggetto che descrive il risultato della query (insieme di tuple)
• BOF, EOF, clone, close, delete, move, moveNext, open, requery, resynch, update, ...
70
ConnessioneConnessione ee queryquery • Ogni accesso deve
essere preceduto da una connessione al database<%Conn.Open “ADOSamples”
Set RS = Conn.Execute(“SELECT * FROM Table)Do While Not RS.EOF. . . .RS.MoveNextLoopRS.CloseConn.Close %>
• Si può mantenere una connessione aperta per tutta la sessione
SUB Session_OnStart
‘----Open ADO connection to
‘----database
Conn.Open “UserDB1”, “userdblogin”, “userdbpassword”
END SUB