Architettura – Server Web

Transcript

Architettura – Server Web
Database e Web
- Tutorial ASP -
Andrea Proli
[email protected]
Laboratorio di Basi di Dati – A.A. 2006/2007
Architettura – Server Web
n
Si dispone di:
Diverse macchine client (sulle quali siete loggati)
Un server web (si-wwwdida.csr.unibo.it)
Un server di dati ORACLE (srvoracle.csr.unibo.it)
CLIENT
WEB SERVER
(si-wwwdida.csr.unibo.it,
137.204.74.85)
FrontFront-end
(Web Browser)
Application Logic
(ASP Files)
DATA SERVER
(srvoracle.csr.unibo.it,
137.204.74.173)
BackBack-end
(Databases)
2
Flashback 1: Applicazione ASP
n
Una applicazione ASP è un insieme di
documenti (“pagine ASP”) collocati nella
stessa directory virtuale
Si può pensare ad un’applicazione ASP come ad un
“sito” Web strutturato su più pagine
Lo stesso server Web può ospitare diverse
applicazioni ASP
Per ogni applicazione ASP possono risultare attive
contemporaneamente diverse sessioni, associate
a utenti diversi
3
Flashback 1: Applicazione ASP
n
La “mappa” di un server Web sul quale girano
due applicazioni ASP:
Web server
Application 1
Page Y
Page X
Page Z
Application 2
Page A
Page B
Session 1
Session 2
Session 3
Session 4
Variables
Variables
Variables
Variables
Variables
Variables
4
Creare un’applicazione ASP
n
Per
creare
un’applicazione
ASP
occorre
configurare il server Web (SI-WWWDIDA):
Creare una nuova cartella sul file system del computer
che
ospita
il
server
Web,
ad
esempio
C:\Inetpub\wwwroot\TutorialASP
Impartire al server Web (il programma, non il PC!) un
comando per creare una nuova virtual directory,
directory il cui
percorso fisico sia quello della cartella appena creata
Impostare i permessi da concedere su quella virtual
directory (si possono scrivere, creare, leggere, cancellare
file? Eseguire script, pagine ASP o programmi? ...)
5
Configurare Microsoft IIS 6.0
n
Internet Information Services (IIS), il server
Web di Microsoft, dispone di un’interfaccia
grafica per la gestione delle virtual directory
Elenco delle applicazioni Web attive (in questo caso 2). Ciascuna
voce corrisponde ad una differente applicazione, dotata di una
propria virtual directory che mappa su una cartella del file system
6
Creare una nuova Web App
n
Supponiamo di aver già creato sul file system della
macchina che ospita il server Web la cartella
C:\Inetpub\wwwroot\TutorialASP, e di associarle sul
server Web una nuova virtual directory (MyWebApp)
2
1
7
Creare una nuova Web App
n
Dopo aver fornito l’alias (il nome) della nuova virtual
directory, la mappiamo sulla cartella fisica creata e
impostiamo i permessi sufficienti all’inserimento e
all’esecuzione di pagine ASP
3
4
8
Creare una nuova Web App
n
Dopo aver mappato la virtual directory è
possibile impostare una serie di opzioni
6
5
9
Creare una nuova Web App
n
E’ possibile ad esempio impostare la pagina di
default da restituire quando la richiesta fa riferimento
all’URL dell’applicazione Web, ma senza specificare
una pagina in particolare
7
In questo caso il server Web, ricevendo una
richiesta HTTP il cui URL è:
http://<nome server>/mywebapp
tenterà di restituire la pagina:
http://<nome server>/mywebapp/Default.htm
Se questa non esiste proverà a recuperare la
pagina con indirizzo:
http://<nome server>/mywebapp/Default.asp,
http://<nome server>/mywebapp/index.htm
e, infine,
http://<nome server>/mywebapp/iisstart.asp.
Se nessuna di queste risorse è presente, il
contenuto della risposta HTTP dipende dai
permessi…
10
Creare una nuova Web App
n
Un’altra impostazione di rilievo riguarda il caching.
caching
Per migliorare le prestazioni, il server Web mantiene
in cache il risultato di una richiesta, per poi restituirlo
direttamente quando riceve richieste identiche…
Questo comportamento può aumentare i
tempi di risposta, ma può sortire effetti non
desiderati.
desiderati
8
Ad esempio, il caching di una pagina ASP è
dannoso quando il contenuto è dinamico,
ossia quando alla stessa richiesta (in
funzione di elaborazioni eseguite dal codice
di script) si vuole poter rispondere in modi
diversi…
Esempio:
Esempio (1) accedo alla pagina degli ordini;
(2) elimino un ordine; (3) accedo di nuovo
alla pagina degli ordini…
11
Caching e dinamicità
n
n
n
Il meccanismo del caching può essere dannoso
perché di fatto inibisce la possibilità di instaurare un
meccanismo di dinamicità lato server
Le impostazioni di caching per la virtual directory sul
server Web consentono di disabilitare il caching lato
server
Tuttavia, occorre anche disabilitare il caching lato
client:
client anche il browser infatti, per ridurre i tempi di
risposta, può memorizzare in una propria cache una
pagine HTML restituita in risposta ad una richiesta
(relativa per esempio ad una pagina “.asp”) e
riproporla direttamente per richieste analoghe senza
interrogare di nuovo il server
12
Caching lato client
n
Disabilitare il caching lato client in Internet Explorer:
Selezionare la voce “Opzioni Internet” dal menu “Strumenti”
Selezionare la scheda “Generale” e premere “Impostazioni”
Selezionare l’opzione “Automaticamente” oppure l’opzione
“All’apertura della pagina” (più sicura)
13
Le virtual directory
n
n
n
Agli studenti non è concesso di accedere al server Web
su SI-WWWDIDA e configurare direttamente le proprie
virtual directory
Pertanto, per ciascun gruppo è stata già predisposta una
virtual directory da utilizzare nel corso di questo tutorial e
durante le successive esercitazioni
L’URL corrispondente per il gruppo *** è
http://si-wwwdida(.csr.unibo.it):50001/LabDB_Gruppo**/
Server Web
Virtual directory
14
Virtual directory per i gruppi
n
In ciascuna virtual directory è inclusa una pagina
“start.html” che visualizza alcune informazioni di
carattere generale, alla quale è possibile accedere
attraverso l’URL:
http://si-wwwdida:50001/LabDB_Gruppo**/start.html
n
Siccome per ogni virtual directory è stato concesso il
permesso di esplorazione,
è possibile
esplorazione
visualizzarne il contenuto digitando semplicemente
l’URL:
http://si-wwwdida:50001/LabDB_Gruppo**/
15
Test della configurazione
n
Per verificare che la virtual directory sia stata
configurata correttamente:
Effettuare login su un computer che non sia il server Web
Aprire il browser Internet e digitare l’URL dell’applicazione
Web sulla barra degli indirizzi (facendo eventualmente
riferimento ad una specifica risorsa)
Se viene mostrata la pagina predefinita oppure il contenuto
della directory virtuale (nel caso sia stato concesso il
permesso di esplorazione), allora la configurazione è
correttta
16
Popolare le virtual directory
n
n
Se la virtual directory è stata configurata
correttamente, risulta ora possibile – previa
concessione dei diritti sul file system –
inserire nuovi documenti all’interno della
cartella sulla quale essa viene mappata
Se si potesse effettuare login direttamente sul
server Web sarebbe sufficiente inserire i file
nella cartella fisica corrispondente, ad
esempio:
esempio
D:\Utenti\LabDB\Gruppo**\WWW
17
Popolare le virtual directory
n
Se non è possibile effettuare login sul server Web, si
può ricorrere a:
FTP (occorre disporre di un client FTP, a patto che un
server FTP sia attivo sulla macchina che ospita anche il
server Web)
TELNET (occorre disporre di un client TELNET, a patto
che un server TELNET sia attivo sulla macchina che
ospita anche il server Web)
Utilizzare il meccanismo UNC di file sharing di Windows
(a patto che si usi tecnologia Microsoft) per accedere al
file system remoto
…
18
Popolare le virtual directory
n
n
Le cartelle su cui sono mappate le virtual directory di
ciascun gruppo sono condivise in rete
E’ possibile accedervi tramite Explorer di Windows:
Selezionare Start -> Esegui
Digitare \\si-wwwdida-vm(.csr.unibo.it)\LabDB_Gruppo***
E’ anche possibile digitare lo stesso percorso sulla barra
degli indirizzi di una qualsiasi istanza di explorer.exe
19
Popolare le virtual directory
n
Si editi il seguente file HTML e lo si inserisca
all’interno della propria virtual directory come
test.htm:
test.htm
<HTML>
<HEAD>
<TITLE>Test</TITLE
</HEAD>
<BODY>
<B>This is a test</B>
</BODY>
</HTML>
n
Si lanci il browser Internet e si richieda il
documento di cui sopra, digitandone l’URL
20
Editing e caching: attenzione!
n
n
n
Modificare il file test.htm appena creato (ad
esempio, cambiare il testo all’interno della
coppia di tag <B> e </B>), lasciando invariato
il nome
Attivare le funzionalità di caching del
browser. In Internet Explorer: selezionare
Menu Strumenti -> Opzioni Internet (Scheda
“Generale”) -> Impostazioni -> “Mai” o
“All’avvio di IE”
Ridigitare l’URL per visualizzare di nuovo il
file modificato: notare gli effetti del caching
21
HTTP e Caching
n
n
n
Il protocollo HTTP (Hyper Text Transfer Protocol)
consente ad un server Web di incapsulare, nella
risposta HTTP con cui fornisce al client la risorsa
richiesta, una serie di direttive - sempre sottoforma
di coppie nome-valore
Tre di queste direttive (“Pragma”, “Expires”, e
“Cache-Control”) controllano il modo in cui il client
gestisce il caching delle risposte
HTML supporta i cosiddetti “meta-tag HTTP-EQUIV”
per incapsulare queste direttive, anziché nella
risposta HTTP, all’interno del documento HTML.
22
HTTP e Caching
n
Il seguente esempio mostra come sia possibile
impostare le direttive di caching all’interno di un file
HTML per far sì che il browser non utilizzi le
impostazioni di default quando l’utente effettua
un’ulteriore richiesta per quella stessa risorsa:
risorsa
<HTML>
<HEAD>
<TITLE>…</TITLE>
<META HTTP-EQUIV=“Pragma” CONTENT=“no-cache”>
<META HTTP-EQUIV=“Expires” CONTENT=“-1”>
<META HTTP-EQUIV=“Cache-Control”
CONTENT=“no-cache, must-revalidate”>
</HEAD>
<BODY>
…
</BODY>
</HTML>
23
HTTP e Caching
n
n
n
n
Modificare il file test.htm aggiungendo i tre
meta-tag per il controllo del caching
all’interno dell’header HTML
Ricaricare la pagina test.htm all’interno del
browser facendo click sul pulsante di refresh
Modificare il titolo o il contenuto della pagina
test.htm,
quindi ridigitarne l’URL per
test.htm
visualizzarla di nuovo
Notare come le impostazioni di caching del
browser Web siano state sovrascritte…
sovrascritte
24
Architettura – Server dei dati
n
Dopo aver configurato e testato le virtual
directory sul server Web, analizziamo ora la
configurazione del server dei dati.
Si dispone di un server ORACLE 8.1
CLIENT
WEB SERVER
(si-wwwdida.csr.unibo.it,
137.204.74.85)
FrontFront-end
(Web Browser)
Application Logic
(ASP Files)
DATA SERVER
(srvoracle.csr.unibo.it,
137.204.74.173)
BackBack-end
(Databases)
25
Il server dei dati
n
n
Il server dei dati (srvoracle.csr.unibo.it)
gestisce il DB SISINF,
SISINF che verrà utilizzato
nella prima parte di questo tutorial
SISINF memorizza informazioni su ipotetici
clienti di un’azienda fittizia:
CLIENTI(C_CF, C_Nome, C_Indirizzo, C_Provincia,
C_Regione, C_Password)
26
Preparare l’applicazione test
n
L’applicazione Web consiste di un insieme
di pagine ASP e HTML che illustrano come
gestire
1. il passaggio di dati da una pagina HTML al
server Web tramite i FORM
2. la connessione ad un DB e la successiva
interrogazione dello stesso.
3. le procedure di autenticazione (login e logout)
4. l’utilizzo di variabili di sessione
27
Preparare l’applicazione test
Scaricare il file ZIP contenente i sorgenti ASP
e HTML dal seguente indirizzo:
http://wwwdida.csr.unibo.it/golfare/sorgenti.zip
n
n
Estrarre i file all’interno della cartella su cui è
mappata la virtual directory assegnata al
proprio gruppo
28
Preparare l’applicazione test
n
La cartella principale contiene i file “.asp” e
“.htm” che costituiscono l’applicazione
n
La pagina
“index.asp”
n
principale
dell’applicazione
è
L’applicazione contiene il file “util.asp”,
importato da tutti gli altri file “.asp”, che
definisce la stringa per la connessione al DB,
i meta-tag e altre funzioni di utilità generale
29
Architetttura – FORM e HTTP
n
E’ importante capire in che modo avviene il
passaggio di dati da una pagina HTML al
server Web, e in che modo questi vengono
ricevuti ed elaborati in una pagina ASP
CLIENT
WEB SERVER
(si-wwwdida.csr.unibo.it,
137.204.74.85)
FrontFront-end
(Web Browser)
Application Logic
(ASP Files)
DATA SERVER
(srvoracle.csr.unibo.it,
137.204.74.173)
BackBack-end
(Databases)
30
Inserimento di dati: i FORM
n
n
n
HTML mette a disposizione i FORM per
creare maschere di inserimento dati da parte
degli utenti
Ogni FORM possiede un pulsante di SUBMIT
attraverso il quale è possibile inviare i dati
immessi
L’URL della risorsa da richiedere al momento
del SUBMIT è determinato dal valore
dell’attributo ACTION nel tag che apre il
FORM
31
Inserimento di dati: i FORM
n
Il file “form_aggiunta_cliente.htm” contiene la
seguente porzione di codice HTML:
Determina la modalità di passaggio
dei valori per i campi del form
URL da richiedere quando
viene effettuato il SUBMIT
[…]
<form method="get" action=“aggiungi_cliente.asp">
Codice Fiscale:
<input type="text" size=25 maxlength=16 name="CFF"/><br>
Nome e Cognome:
<input type="text" size=25 maxlength=20 name="Nome"/><br>
[…]
<input type="submit" value="Invia i dati" />
<input type="reset" value="Cancella i dati" />
<br>
Genera il pulsante per
Genera il pulsante per
[…]
il SUBMIT del form
il RESET del form
32
Metodo GET e metodo POST
n
n
n
Quando viene effettuato il SUBMIT di un form, il
browser effettua una richiesta HTTP per la risorsa
specificata come valore dell’attributo ACTION
(esempio, “Write.asp”)
Ogni richiesta HTTP specifica (1) un metodo,
metodo ossia
l’operazione che il server deve effettuare, e (2) una
serie di parametri
I metodi definiti da HTTP/1.1 sono 8: OPTIONS,
HEAD, GET,
GET POST,
POST PUT, DELETE, TRACE,
CONNECT
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html,
paragrafi 9.3 (GET) e 9.5 (POST)
33
Metodo GET e metodo POST
n
n
Esempio di richiesta HTTP con metodo GET:
GET aprire il browser
Web e digitare il seguente URL:
http://djce.org.uk/dumprequest.html
La pagina HTML mostra e spiega la richiesta HTTP che il
browser ha inoltrato al server Web per ottenerla
GET /dumprequest.html HTTP/1.1
Host: djce.org.uk
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; [...]
Accept: application/xhtml+voice+xml;version=1.2, application/x-xhtml
+voice+xml;version=1.2, text/html, application/xml;q=0.9,
application/xhtml+xml, image/png, image/jpeg, image/gif, image/xxbitmap, */*;q=0.1
Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
[...]
n
La pagina http://djce.org.uk/utils/echo-nocache.cgi,
nocache.cgi invece,
mostra in output il solo testo della richiesta HTTP effettuata
34
Metodo GET e metodo POST
n
n
Quando viene specificato un URL sulla barra
degli indirizzi il browser inoltra richieste HTTP
utilizzando il metodo GET
Il metodo GET serve per ottenere il
contenuto della risorsa o l’output del
processo elaborativo identificata/o dall’URL
35
Metodo GET e metodo POST
n
n
Il metodo POST viene in genere utilizzato
nelle richieste innescate dal submit di un
form, benché il valore di default per l’attributo
METHOD sia GET
Il metodo POST serve per aggiungere i dati
specificati nella richiesta come contenuto
subordinato alla risorsa identificata dall’URL
36
Metodo GET e metodo POST
n
L’utility cURL (http://curl.haxx.se/)
http://curl.haxx.se/ è un programma eseguibile
da riga di comando che consente di inoltrare richieste HTTP
La richiesta POST innescata dal submit del seguente form:
<form method=“POST” action=“<URL richiesta>”>
<input type=text name=“birthyear”>
<input type=submit name=press value=“OK”>
</form>
può essere simulata tramite il seguente comando cURL:
curl -d “birthyear=1905&press=%20OK%20” <URL richiesta>
n
Utilizzando http://djce.org.uk/dumprequest.html è possibile
ottenere una descrizione (HTML) della richiesta POST
effettuata; tramite http://djce.org.uk/utils/echo-nocache.cgi è
invece possibile esaminarne il testo
37
Metodo GET e metodo POST
n
n
n
n
La modalità con cui vengono trasmessi al server i
valori dei campi del form varia a seconda del metodo
utilizzato nella richiesta HTTP generata dal submit
Ciò che non varia è il modo in cui vengono
codificati i valori, ossia tramite una stringa
contenente una serie di coppie nome=valore
separate dal carattere ampersand (“&”)
Nel caso di GET,
GET questa stringa viene posta come
suffisso dell’URL (e prende il nome di QueryString),
QueryString
dal quale è separata tramite un caratterere “?”
Nel caso di POST,
POST la stringa è contenuta come
payload della richiesta HTTP,
HTTP il cui Content-Type è
impostato a “application/x-www-form-urlencoded”
38
GET e POST: un dump…
n
Modificare il file form_aggiunta_cliente.htm
impostando il valore dell’attributo ACTION a:
“http://djce.org.uk/utils/echo-nocache.cgi”
n
n
Aprire la pagina form_aggiunta_cliente.htm con il
browser Web, all’interno della propria virtual directory
Inserire alcuni dati, effettuare il submit del form e
osservare come il contenuto della risposta HTTP (il
testo visualizzato dal browser) consista precisamente
nel testo della corrispondente richiesta HTTP
39
GET e POST: un dump…
n
n
n
Modificare il file form_aggiunta_cliente.htm
impostando il valore dell’attributo METHOD a
“POST”
Aprire la pagina form_aggiunta_cliente.htm
con il browser Web, all’interno della propria
virtual directory
Inserire alcuni dati, effettuare il submit del
form e osservare il contenuto della risposta
40
GET e POST: un dump…
n
n
Ripristinare il contenuto originale del file
form_aggiunta_cliente.htm impostando il
valore dell’attributo METHOD a “GET” e il
valore dell’attributo ACTION a “Write.asp”
Il test effettuato mostra come i dati del form
vengano tramessi tramite una stringa di
coppie nome-valore separate da ampersand
Metodo GET
Metodo POST
->
->
QueryString nell’URL
Contenuto della richiesta
41
GET e POST: ricevere i dati
n
n
n
In ASP, la modalità di estrazione dei valori dei
campi di un form dalla richiesta HTTP varia
in funzione del metodo utilizzato
Se si è utilizzato il metodo GET,
GET tramite
l’oggetto Request.QueryString è possibile
accedere alle coppie nome-valore
Se si è utilizzato il metodo POST,
POST sempre
tramite l’oggetto Request.Form è possibile
accedere ai valori dei campi del form
42
GET e POST: ricevere i dati
n
Esaminare tramite notepad il sorgente del file
form_output.asp:
form_output.asp
'Se il metodo utilizzato nella form è GET
If Request.ServerVariables("QUERY_STRING") <> "" Then
Response.Write "<b>GET</b> ...” & Vbcrlf
... (UTILIZZO DELL’OGGETTO Request.QueryString) ...
'Se il metodo utilizzato nella form è POST
If Request.ServerVariables("CONTENT_LENGTH") <> 0 Then %>
<b>POST</b><br /><br /></font></p><hr />
... (UTILIZZO DELL’OGGETTO Request.Form) ...
n
Esaminare tramite notepad il sorgente del file
aggiungi_cliente.asp e osservare in che
modo vengono estratti i valori dei campi
43
ASP: sintassi ed elaborazione
n
Il primo elemento sintattico di ogni file ASP è
un’intestazione, racchiusa tra tag <% e %>,
%>
che dichiara il linguaggio di scripting utilizzato
nelle successive sezioni di codice
<% @LANGUAGE = VBScript %>
n
Nei nostri esempi faremo uso di VBScript,
VBScript
ma anche Javascript è supportato
44
ASP: sintassi ed elaborazione
n
Per migliorare la modularità di un progetto è
sempre possibile incorporare le funzionalità
comuni a più pagine ASP all’interno di un
solo file .asp e importarlo laddove occorre
<!--#include file="util.asp” -->
n
La riga di codice di cui sopra è presente in
tutti i file .asp dell’applicazione eccetto
util.asp: il grafo delle importazioni non può
contenere cicli (se così fosse ci sarebbe un
file che importa se stesso…)
45
ASP: sintassi ed elaborazione
n
n
n
n
ASP consente di alternare sezioni di codice di script
(procedurale), delimitate dai tag <% e %>,
%> ad altre
sezioni di codice HTML statico
Permette di generare dinamicamente l’HTML da
inviare in output al client come risultato di
un’elaborazione
Per scrivere sull’output dall’interno di una sezione di
codice è
sufficiente invocare la funzione
Response.Write(stringa)
Response.Write
L’istruzione Response.Write(variabile)
è equivalente
Response.Write
alla sezione di codice <%= variabile %>
46
ASP: sintassi ed elaborazione
n
Tra le altre cose, utilizzando le sezioni di
codice di script risulta possibile:
Dichiarare variabili in una sezione e utilizzarle o valorizzarle
in una sezione successiva
Concatenare stringhe (operatore &)
&
Comporre query dinamicamente concatenando porzioni di
stringa prefissate con i valori di alcuni campi di un form
Esprimere condizioni (If … Then … Else … End If)
If
Instaurare cicli di iterazione (For Each,
Each While,
While …)
Utilizzare oggetti built-in per leggere e scrivere il valore di
una variabile di sessione (Session(“…”))
Dichiarare e invocare funzioni (Sub … End Sub)
Sub
…
47
ASP: sintassi ed elaborazione
n
Alcune operazioni e proprietà di oggetti built-in:
Oggetto
Response
Oggetto
Request
Oggetto
Server
Oggetto
Session
Oggetto
Application
–
–
–
–
–
–
–
–
–
–
–
–
–
–
Response.Write(“…”)
Response.Redirect(“…”)
Response.Clear()
Response.ContentType [ = “…” ]
Request.Form(“…”) o Request.Form(i)
Request.QueryString(“…”) o Request.QueryString(i)
Request.Cookies(“…”) o Request.Cookies(i)
Request.ServerVariables(<key>) (esistono 54 chiavi)
Server.Execute(“…”)
Server.MapPath(“…”)
Server.CreateObject(<Nome.Classe>)
Session(“…”) [ = value ]
Session.Abandon()
Application(“…”) [ = value ]
48
Architettura – ASP e DB
n
All’interno di una sezione di codice script in
un file .asp è possibile creare oggetti ActiveX
(Server.CreateObject) tramite i quali gestire
l’interazione tra l’applicazione Web e il DB
(ActiveX Data Objects,
Objects ADO)
CLIENT
WEB SERVER
(wwwdida.csr.unibo.it
137.204.74.39)
FrontFront-end
(Web Browser)
Application Logic
(ASP Files)
DATA SERVER
(srvoracle.csr.unibo.it,
137.204.74.173)
BackBack-end
(Databases)
49
Flashback 2: ADO e DB
n
Come accedere a una fonte dati con ADO
1.
2.
3.
4.
5.
6.
7.
8.
9.
Connessione con data source (Connection).
Connection Opzionalmente,
iniziare una transazione
Opzionalmente, creare un oggetto per rappresentare un comando
SQL (Command)
Command
Opzionalmente, specificare colonne, tabelle, e valori della query
SQL come parametri variabili (Parameter)
Parameter
Eseguire il comando (Command,
Command Connection,
Connection o Recordset)
Recordset
Se il comando è “row-returning”, memorizzare le righe in un
oggetto contenitore (Recordset)
Recordset
Opzionalmente, creare una vista per ordinare, filtrare e navigare i
dati (Recordset)
Recordset
Modificare i dati: aggiungere, cancellare, modificare righe e
colonne (Recordset)
Recordset
Se appropriato, aggiornare il data source con le modifiche
eseguite (Recordset)
Recordset
In caso di transazione, accettare o rigettare i cambiamenti prima
di terminare la transazione (Connection)
Connection
50
Stabilire una connessione
n
n
n
Modificare la connection string all’interno
del file util.asp inserendo UID e PWD relative
al proprio gruppo
La connection string viene utilizzata in ADO
(ActiveX Data Object) per aprire una
connessione ad un DB
Aprire il browser e digitare l’URL del file
principale index.asp
51
Impostare la connection
string
n
La connection string è una lista di coppie nomevalore che fornisce i parametri per l’accesso alla
sorgente di dati. In primis:
Fornisce le credenziali di accesso
Specifica la locazione della sorgente
n
Differenti sistemi possono richiedere parametri
differenti. E’ possibile configurare separatamente dei
DSN (Data Source Name) da utilizzare all’interno di
una connection string
52
Eseguire un’interrogazione
n
Si esamini il file leggi_clienti.asp (incipit)
CREA IL RECORDSET PER LE (EVENTUALI
EVENTUALI) TUPLE RESTITUITE
Set rs1 = Server.CreateObject(“ADODB.Recordset”)
IMPOSTA LA CONNECTION STRING (v. file util.asp)
rs1.ActiveConnection = conn_oracle_STRING
IMPOSTA LA QUERY SQL ASSOCIATA AL RECORDSET
rs1.Source = "SELECT * FROM Clienti WHERE C_Nazione='Italia';"
IMPOSTA IL TIPO DI CURSORE (forward
forward--only=0, keyset=1, dynamic=2, static=3)
static=3
rs1.CursorType = 0
IMPOSTA LA LOCAZIONE DEL CURSORE (server
server side=2, client side=3)
side=3
rs1.CursorLocation = 2
IMPOSTA IL LIVELLO DI ISOLAMENTO (read
read--only=1, pessimistic=2,
optimistic=3, batchbatch-optimistic=4)
optimistic=4
rs1.LockType = 1
ESEGUE LA QUERY
rs1.Open()
53
Eseguire un’interrogazione
n
Si esamini il file leggi_clienti.asp (più avanti)
APRE LA TABELLA HTML CHE FORMATTA I RECORD LETTI DAL DATABASE
<table>
ITERA SU TUTTE LE TUPLE (CLIENTI) ALL’INTERNO DEL RECORDSET
<% While (NOT rs1.EOF) %>
POPOLA LA TABELLA EMETTENDO UNA RIGA PER OGNI RECORD
<tr><td><A HREF="vedi_cliente.asp?CFC=
<%=(rs1.Fields.Item("C_CF").Value)%>”>
<%=(rs1.Fields.Item("C_CF").Value)%></A></td>
<td><%=(rs1.Fields.Item("c_NOME").Value)%></td>
[...] </tr>
PASSA AL RECORD SUCCESSIVO E CONCLUDE IL CICLO
<% rs1.MoveNext()
Wend
CHIUDE IL RECORDSET,
RECORDSET LIBERA LE RISORSE E TERMINA LA TABELLA
rs1.Close()
Set rs1 = Nothing %>
</table>
54
FORM di autenticazione
n
n
Oltre all’esecuzione di query SQL il cui testo
è determinato staticamente,
staticamente risulta spesso
utile comporre dinamicamente query SQL
utilizzando parametri provenienti da un form
Si esamini il file autenticazione.asp (incipit)
MyQuery = “SELECT C_NOME, C_NAZIONE, C_PASSWORD FROM CLIENTI _
WHERE C_CF=‘” + Request.QueryString.Item(“CFC”) +
“’ AND C_PASSWORD=‘” + Request.QueryString.Item(“PWD”) +
“’;”
Set rs1 = Server.CreateObject(“ADODB.Recordset”)
[...]
rs1.Open()
55
Utilizzo di variabili di sessione
n
In un generico sistema di autenticazione (vedi
file autenticazione.asp)
autenticazione.asp è possibile tenere
traccia dell’esito della procedura di login
utilizzando delle variabili di sessione
<% If Err <> 0 or rs1.EOF Then %>
EMETTE UN MESSAGGIO DI ERRORE IN CASO DI FALLIMENTO
Codice Fiscale o Password non valida
<% Err.Clear
On Error Goto 0 %>
<% Else
IMPOSTA VARIABILI DI SESSIONE PER TENERE TRACCIA DEL LOGIN
Session("Nome") = rs1.Fields.Item("C_NOME").Value
Session("Nazione") = rs1.Fields.Item("C_NAZIONE").Value %>
Benvenuto: <%= Session("Nome") %>
<% End if %>
56
Utilizzo di variabili di sessione
n
Ciascuna pagina ASP può allora verificare se
il login è stato effettuato recuperando il valore
delle suddette variabili
index.asp
Buongiorno
<% If Session(“Nome”)<>“” Then
Response.Write(“<B><FONT COLOR='red'>” & Session(“Nome”) &
“</FONT></B>”)
End If
%> ! Ecco le funzioni disponibili:
logout.asp
Arrivederci <%= Session("Nome") %> la sessione è stata terminata
<% Session.Abandon %>
57