database e web - le active server pagesbias.csr.unibo.it/golfarelli/labdb/materialedidattico/...nil...

25
Database e Web - le Active Server Pages - Andrea Proli Laboratorio di Basi di Dati – A.A. 2005/2006 2 Il modello client-server 1. Richiesta 2. Risposta CLIENT SERVER n Il modello di interazione client-server ricorre spesso sia nelle architetture informatiche, sia nella vita reale n Modella la comunicazione tra un’entità che offre un servizio (server server ) e un’entità che ne usufruisce (client client ) n Tipicamente, la fruizione del servizio avviene tramite uno scambio di messaggi: a fronte di una richiesta richiesta effettuata dal client, il server fornisce una risposta risposta

Upload: others

Post on 31-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

1

Database e Web- le Active Server Pages -

Andrea Proli

Laboratorio di Basi di Dati – A.A. 2005/2006

2

Il modello client-server

1. Richiesta

2. Risposta

CLIENTSERVER

n Il modello di interazione client-server ricorre spesso sia nelle architetture informatiche, sia nella vita reale

n Modella la comunicazione tra un’entità che offre un servizio (serverserver) e un’entità che ne usufruisce (clientclient)

n Tipicamente, la fruizione del servizio avviene tramite uno scambio di messaggi: a fronte di una richiestarichiestaeffettuata dal client, il server fornisce una rispostarisposta

Page 2: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

2

3

Il modello client-server

n Il modello client-server è un paradigma astratto. In concreto, può assumere diverse forme

n I vari sistemi classificabili come client-server si differenziano in base ai seguenti aspetti:üü MezzoMezzo di comunicazione (posta, voce, telefono, …)üü ContenutoContenuto della richiesta e della risposta (dati, …)ü Metodo di reciproca identificazioneidentificazione e localizzazionelocalizzazione

(credenziali, coordinate geografiche, indirizzo, …)

ü Natura del servizioservizio (vendita, calcolo, archiviazione, …)ü Mantenimento della storiastoria, ovvero ciò che un server registra

informazioni sui client che ha servito (preferenze, stato, …)ü Luogo di memorizzazionememorizzazione delle suddette informazioni (sul

lato server o sul lato client, …)

4

Esempio – una biblioteca

n Uno studente (client) si reca in una biblioteca (server) per ottenere il prestito di un libro (servizio offerto)ü La richiestarichiesta avviene tramite uno scambio vocaleü Il contenutocontenuto della richiesta è in sostanza il titolo del libro che

si vuole ottenere in prestito; il contenuto della risposta è il libro e la data di restituzione

üü LL’’identificazioneidentificazione del client avviene tramite l’esibizione di una tessera. La biblioteca è localizzatalocalizzata tramite il suo indirizzo

ü Il servizioservizio effettuato è (ovviamente) il prestito del libroü La biblioteca mantienemantiene informazioniinformazioni storiche sui servizi offerti

ai propri tesserati, in particolare la presenza o meno di libri non ancora restituiti

ü Queste informazioni vengono mantenute all’interno della biblioteca (sulsul latolato serverserver) in un registro cartaceo o informatico

Page 3: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

3

5

Esempio – un supermercato

n Una persona (client) si reca in un supermercato (server) per acquistare dei prodotti (servizio offerto)ü La richiestarichiesta avviene tramite uno scambio vocaleü Il contenutocontenuto della richiesta è l’insieme dei prodotti che si

intende acquistare, e il denaro necessario per il pagamentoüü NonNon occorre identificareidentificare il client. La localizzazionelocalizzazione del

supermercato avviene tramite il suo indirizzoü Il servizioservizio effettuato è (ovviamente) la vendita di prodottiü Il supermercato nonnon mantienemantiene informazioniinformazioni sui propri clienti:

le modalità con cui viene offerto un servizio non dipendono dai servizi offerti in precedenza allo stesso cliente

ü Nel caso della tessera punti, il supermercato mantiene informazioni sul volume di acquisto di un cliente tramite l’accredito di punti all’interno di una tessera magnetica. Essendo questa di proprietà del cliente, la memorizzazione avviene sulsul latolato clientclient

6

Esempio – un bancomat

n Una persona (client) si reca presso un bancomat (server) per prelevare denaro in contanti (servizio offerto)ü La richiestarichiesta avviene presentandosi allo sportello automatico,

inserendo la tessera ed effettuando selezioni da un menu di opzioni

ü Il contenutocontenuto della richiesta è la quantità di denaro che si intende ritirare, la tessera del bancomat e il codice segreto

üü LL’’identificazioneidentificazione del client avviene tramite il codice PIN e la tessera. La localizzazionelocalizzazione del bancomat avviene tramite ricerca

ü Il servizioservizio effettuato è (ovviamente) il prelievo di denaroü Il bancomat (in realtà, la banca…) mantiene la storiastoria dei

propri clienti, registrando la quantità di denaro residuaü Queste informazioni sono memorizzate sulsul latolato serverserver

Page 4: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

4

7

Il World Wide Web

n Il modello client-server applicato al Web consiste nella richiesta di una risorsarisorsa da parte di un programma client e nella restituzione di quella risorsa (se esistente) da parte di un programma server

n Il programma clientclient è un Web browserWeb browsern Il programma serverserver è un Web serverWeb servern Le modalità con cui il Web browser effettua una

richiesta al Web server e con cui il Web server fornisce una risposta al Web browser sono definite dal protocollo HTTPprotocollo HTTP

8

Il World Wide Web

1. Richiesta documentohttp://www.google.it/index.html

2. Restituzione file

<html><title>Google</title><body>…</body>

</html>

3. Rendering del file HTMLda parte del web browser

WEBBROWSER

WEBSERVER

http://www.google.it/index.html

Localizzazionedel server

Contenutorichiesta (nome della pagina)

URL (Uniform Resource Locator)

Protocollo

Page 5: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

5

9

Il World Wide Web “statico”

n Nel modello originariomodello originario del WWW, le richieste inoltrate dai client ai server Web riguardano esclusivamente file HTML

n Questo significa che due richieste per la stessa stessa risorsarisorsa otterranno la stessa rispostastessa risposta, ossia lo stesso documento HTML, indipendentemente da chi le effettua e quando. La pagina visualizzata dal browser è la stessa per tutti gli utenti e in qualsiasi momento (a meno che non venga modificato il file HTML)

n A questo schema “staticostatico”, in cui la risposta ottenuta non dipende né dal contesto né da eventuali criteri di personalizzazione, viene contrapposto il modello “dinamicodinamico”

10

Il World Wide Web “dinamico”

n Quasi tutti i siti Web, attualmente, realizzano il modello dinamicodinamico: a fronte della stessa richiesta si possono ottenere risposte diverse

Il contenuto della risposta che si ottiene dal web server www.amazon.com, cioè il file HTML visualizzato dal browser, viene definito in funzione del client che ha effettuato la richiesta.

Page 6: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

6

11

Il World Wide Web “dinamico”

n Le applicazioni di e-commerce rappresentano un tipico esempio di sito Web dinamico

La pagina HTML che visualizza un “carrello della spesa” virtuale deve riflettere lo stato attuale dell’ordine che l’utente sta componendo.

Se lo stesso utente ritorna alla pagina dei prodotti e aggiunge un prodotto al proprio ordine, alla richiesta successiva la pagina del carrello dovrà essere aggiornata e riflettere la modifica.

Inoltre, a utenti diversi dovràessere presentato il proprio carrello della spesa individuale.

12

Il World Wide Web “dinamico”

n In un sito Web dinamico il contenutoil contenuto della risposta puòpuò variarevariare da richiesta a richiesta

n Tuttavia, in genere, ciò che cambia è solo una parte del documento HTML restituito, mentre la strutturala struttura della pagina resta perlopidella pagina resta perlopiùùinvariatainvariata

n Allora, è possibile realizzare un sito Web dinamico definendo a priori un templatetemplate, una struttura struttura invarianteinvariante per la pagina HTML, e completando il template con i dati variabili calcolati al momento della richiesta

Page 7: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

7

13

Active Server Pages

n Microsoft ActiveActive Server Server PagesPages (ASP) è uno strumento semplice per la realizzazione di siti Web dinamici che permette di combinare codice HTML e codice di script

n Tecnologie superiori ad ASP, come JSP (Java Server Pages) e ASP.NET, sono state sviluppate. La più semplice architettura e la larga diffusione in ambito aziendale fanno però di ASP un ottimo strumento didattico

<!-- Helloworld.asp --><TITLE>My First Active Server Web Page</TITLE><BODY BGCOLOR="Yellow"><%If Time >= #12:00:00 AM# And Time < #12:00:00 PM#Then cMessage = "Good morning, World! How about some coffee?“Else cMessage = "Hello, World! How's your day going so far?"

End If%><FONT Size=12 COLOR=“Red”><%=cMessage%>

</FONT></BODY>

14

ASP: Quadro tecnologico

n ASP è parte di un’architettura complessa in cui figurano diversi componenti

IIS

Page 8: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

8

15

Cos’è ASP?

n Il framework ASP mette a disposizione:

ü Un linguaggio di linguaggio di scriptingscripting che consente di generare codice HTML per via programmatica

ü Un ambiente di esecuzioneambiente di esecuzione che permette di interfacciarsi con il server Web attraverso i cosiddetti “oggetti built-in”

üü Tecnologia Tecnologia ActiveXActiveX e COMe COM per collegarsi a basi di dati non soltanto relazionali

16

Active Server Pages e DB

n Nell’esempio precedente, la porzione di codice script verificava il valore assunto da una variabile globalevariabile globaleed emetteva un messaggio differente a seconda dell’orario in cui la richiesta veniva effettuata

n Nelle applicazioni reali, molto più complesse, le informazioni da inserire nell’output o da utilizzare per determinare quale output produrre sono memorizzate in uno o più databasedatabase

n Questi database possono a loro volta trovarsi su una su una macchina differentemacchina differente da quella su cui viene eseguito il server Web, e ne possono esistere più copie (per ridurre il rischio di perdita di datiridurre il rischio di perdita di dati a fronte di malfunzionamenti e per aumentare le prestazioniaumentare le prestazioni)

Page 9: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

9

17

MDAC (Microsoft Data Access Components)

nn MMicrosoft DData AAccess CComponents è lo stack di componenti per l’accesso a fonti dati

Applicazione webApplicazione web

ADOADO

OLE DBOLE DB

ODBCODBC

DATI SQL

SQL ServerOracleEcc.

DATI SQL

SQL ServerOracleEcc.

DATI NON SQL

TestoVideoEcc.

DATI NON SQL

TestoVideoEcc.

18

ADO (ActiveX Data Objects)

n Gli AActiveX DData OObject sono una famiglia di controlli ActiveX che fornisce un’interfaccia di programmazione per il collegamento con basi di dati

n L’interfaccia ADO è una collezione di operazioni di alto livellodi alto livello e si basa, a sua volta, su comandi OLE DB di più basso livello

Page 10: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

10

19

Interfacciarsi a DB con ADO

nn Come accedere a una fonte dati con ADOCome accedere a una fonte dati con ADO1. Connessione con data source (ConnectionConnection). Opzionalmente,

iniziare una transazione2. Opzionalmente, creare un oggetto per rappresentare un comando

SQL (CommandCommand)3. Opzionalmente, specificare colonne, tabelle, e valori della query

SQL come parametri variabili (ParameterParameter)4. Eseguire il comando (CommandCommand, ConnectionConnection, o RecordsetRecordset)5. Se il comando è “row-returning”, memorizzare le righe in un

oggetto contenitore (RecordsetRecordset)6. Opzionalmente, creare una vista per ordinare, filtrare e navigare i

dati (RecordsetRecordset)7. Modificare i dati: aggiungere, cancellare, modificare righe e

colonne (RecordsetRecordset)8. Se appropriato, aggiornare il data source con le modifiche

eseguite (RecordsetRecordset)9. In caso di transazione, accettare o rigettare i cambiamenti prima

di terminare la transazione (ConnectionConnection)

20

Interfacciarsi a DB con ADO

n Esempio di connessione ad un DB da ASP<%‘Stabilisce la connessione con una sorgente dati

strDSN = “FILEDSN=MyDatabase.dsn”Set cn = Server.CreateObject("ADODB.Connection") cn.Open strDSN 'Instantiate a Recordset object Set rsCustomers = Server.CreateObject(“ADODB.Recordset”)

‘Apreun recordset usando il metodo Open e usa la connesione creata precedentementestrSQL = “SELECT FirstName, LastName ” &

“FROM Customers ” &“WHERE LastName = ‘Smith’”

rsCustomers.Open(strSQL, cn)

‘Cicla sul record set e mostra i risultatiSet firstName = rsCustomers(“FirstName”) Set lastName = rsCustomers(“LastName”) Do Until rsCustomers.EOF

Response.Write firstName & “ “ & lastName & “<BR>”rsCustomers.MoveNext

Loop%>

L’operazione Response.Write consente di scrivere una stringa di testo nell’output che verrà inviato al client come risposta sottoforma di documento HTML. Equivale a scrivere:<%=objFirstName & “ ” & objLastName & “<BR>”%>

Page 11: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

11

21

Architettura a 3 livelli

n Dall’architettura client-server tradizionale si evolve allora verso unun’’architetturaarchitettura a 3 livellia 3 livelli (3-tier)

n Il server Web, insieme con le pagine ASP che realizzano la logica applicativalogica applicativa del sito, occupa il livello intermedio, tra il frontfront--endend (browser dell’utente) e il backback--endend (server dei dati)

FrontFront--endend(Web Browser)

ApplicationApplication LogicLogic(ASP Files)

BackBack--endend(Databases)

WEB SERVER DATA SERVERCLIENT

22

Architettura a 3 livelli

[…]

<%‘Apreun recordset usando il metodo Open e usa la connesione creata precedentemente

username = Request.Form(“username”)strSQL = “SELECT Password, Name, Surname ” &

“FROM Users” &“WHERE username=‘” &username & “’”

rsUsers.Open(strSQL, cn)password = rsUsers(“Password”)firstName = rsUsers(“Name”)

‘Effettua l’autenticazioneIf (password = correctPassowrd) ThenResponse.Write “<B>Benvenuto, ” & firstName & “!</B>"

Else[…]

%>

ü Nel framework ASP, l’oggetto RequestRequest incapsula la richiesta HTTP effettuata dal client e contiene tutti i parametri (valori dei campi dei form, ecc)

n Esempio di pagina ASP per autenticazione

Page 12: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

12

23

Architettura a 3 livelli

n Nell’esempio del carrello virtualecarrello virtuale, in un database potrebbero essere memorizzati gli ordini effettuati dai clienti e i relativi dettagli

nn EsempioEsempio: nel generare la risposta alla richiesta (inoltrata dal Web browser) della pagina degli ordini (http://.../orders.asp), una porzione di codice di script simile a quella dell’esempio precedente potrebbe allora iterare su tutte le righe di un ordine per generare in output una tabella HTML simile a quella del sito di e-commercegià visto

24

Un problema…

nn ProblemaProblema: in relazione al carrello virtuale, comecome può il server sapere quale utentequale utente ha effettuato la richiesta, in modo da selezionare soltanto gli ordini da lui effettuati?

Se il codice di script generasse l’output senza curarsi di chi abbia effettuato la richiesta, come sarebbe possibile personalizzarepersonalizzare il contenuto delle pagine HTML restituite?

n Occorrerà allora che le informazioni necessarie alla personalizzazione siano codificate, in qualche modo, nella richiesta richiesta stessastessa…

Page 13: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

13

25

Paragima di comunicazione

n Comunicazione “tipo telefonata”ü Tra il server e il client esiste una connessione sempre attiva

in tutto il periodo durante il quale si svolge la comunicazioneü Il server e il client si scambiano messaggi sfruttando la

connessione attivaü Il server e il client chiudono la connessione quando lo

scambio di messaggi è terminato

n Comunicazione “tipo posta” (il WWW funziona così)ü Non esiste una connessione permanenteü Concluso lo scambio di messaggi richiesta-risposta, il server

e il client “perdono la memoria” e non ricordano nulla dello scambio avvenuto

ü Un nuovo scambio di messaggi richiede di instaurare una nuova connessione (e si “ricomincia da caporicomincia da capo”)

26

Modello richiesta-rispostache ore sono?che ore sono?

le 15:50le 15:50

come ti chiami?come ti chiami?

AndreaAndrea

conosci Giorgio?conosci Giorgio?

ssìì

e suo fratello?e suo fratello?

suo di chi?suo di chi?

da quanto tempo stiamo conversando?da quanto tempo stiamo conversando?

dal momento in cui me ldal momento in cui me l’’hai chiestohai chiesto

hai capito cosa ti ho chiesto?hai capito cosa ti ho chiesto?

non mi avevi mai chiesto niente primanon mi avevi mai chiesto niente prima

Il modello richiesta-risposta nonnonsupporta questo tipo di comunicazione. Dopo ogni Dopo ogni risposta la conversazione risposta la conversazione èèchiusachiusa, e il server perde la memoria dello scambio…

Questo meccanismo banale di comunicazione è supportato, ma non modella comunicazioni non modella comunicazioni articolatearticolate in cui la risposta ad una domanda può dipendere dagli scambi di messaggi avvenuti in precedenza…

(metafora)

Page 14: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

14

27

Molteplicità degli interlocutori

nn ComplicazioneComplicazione: consideriamo un server al quale vengono inoltrate richieste provenienti da diversi provenienti da diversi clientclient

ü Se il server è “privo di memoria”, non è mai in grado di “riconoscere” chichi effettua le richieste

ü E’ quindi impossibile per il server ricostruire le sequenze di messaggi che costituiscono le “conversazioni”

n In un’applicazione Web, si vuole invece mantenere mantenere lo statolo stato dell’interazione nel temponel tempo tra client e server, realizzando così una comunicazione “tipo telefonata”al di sopra di un sistema “tipo posta”…

28

Per non perdere la memoria…

n Nelle applicazioni Web è tipico che si voglia tener traccia delle richieste effettuate dal client (percorsi di navigazione, selezioni…)

n Occorre allora un meccanismo che consenta di riconoscere quando due messaggi fanno parte della stessa comunicazionestessa comunicazione

n Una possibilità potrebbe essere quella di basarsi sul riconoscimento del mittente mittente di un messaggio

Page 15: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

15

29

Il “mittente”…

nn ProblemaProblema: quand’è che due richieste sono considerate parte della stessa comunicazione con un unico mittente?ü Quando provengono dallo stesso indirizzo IP?ü Quando provengono dallo stesso computer?ü Quando provengono dallo stesso programma?ü Quando provengono dallo stesso processo?ü Quando l’utente è lo stesso essere umano?ü Tutte queste condizioni insieme?

n Consideriamo un esempio reale…

30

Esempio…Un sito Web che offre un servizio di consultazione online della posta elettronica. Effettuo login e accedo alla mailbox…

Page 16: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

16

31

Esempio…Creo una nuova finestra dalla stessa istanza del browser e copiol’URL nella barra degli indirizzi: tutto OK, accedo alla mailbox…

32

Esempio…Apro una nuova istanza del browser e copio l’URL nella barra degli indirizzi: questa volta non vengo riconosciuto…

Page 17: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

17

33

Soluzione: le “sessioni”

n Tutte le richieste di pagine ad un server Web si svolgono all’interno di una sessionesessione. Le sessioni sono gestite dal server Web (sessionsession trackingtracking)

Una nuova sessione viene creatacreata alla prima richiesta che non appartiene ad alcuna sessione, e viene distruttadistrutta tramite apposito comando oppure allo scadere di un certo tempo limite

nn Una sessione rappresenta un Una sessione rappresenta un contestocontesto, un , un ambiente di comunicazione allambiente di comunicazione all’’interno del quale interno del quale ha luogo ha luogo una sequenza di interazioniuna sequenza di interazioni(richieste/risposte) tra il (richieste/risposte) tra il clientclient e il servere il server

34

Sessione

1. Richiesta documentohttp://www.mysite.org /login.asp

contiene: info autenticazione

3. Restituzione output HTML

WEBSERVER

2. SessionID = CreaNuovaSessione()

WEBBROWSER

contiene: SessionID (es., AB135)

4. Richiesta documentohttp://www.mysite.org /products.asp

contiene : SessionID (AB135)

6. Restituzione output HTML personalizzato

5. Riconoscimento SessionID=AB135

Page 18: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

18

35

L’oggetto Session in ASP

n La sessione correntesessione corrente nel contesto della quale il codice script di una pagina ASP viene eseguito èincapsulata dall’oggetto oggetto SessionSession

n L’oggetto Session è in grado di memorizzare coppie <nome, valore><nome, valore>, del tipo:

ValoreNome

“.JPG”formatoPreferito

……

4numeroTentativi

“ORD4513”IDOrdineAttuale

“AB12, BC455, CD330”IDProdottiSelezionati

“Rossi”username

36

L’oggetto Session - Esempio

<%[…]

‘Effettua l’autenticazioneIf (password = correctPassowrd) ThenResponse.Write “<B>Benvenuto, ” & firstName & & “!</B>”Session(“login”)=“OK”Response.Redirect(“www.mysite.org/homepage.asp”);

ElseResponse.Write “<B>Credenziali non valide</B>”Response.Redirect(“www.mysite.org/login.asp”);

End If%>

n Supponiamo che l’utente abbia inserito username e password alla pagina www.mysite.org/login.aspü L’utente ha poi premuto il pulsante “login”, effettuando il

submit del form e inviando una richiesta al server Web per la pagina www.mysite.org/authenticate.asp:

Page 19: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

19

37

L’oggetto Session - Esempio

<%‘Verificache il login sia stato effettuatoIf Not (Session(“login”)=“OK”)Response.Redirect(“www.mysite.org/login.asp”);

End If%>[…]

n Tutte le altre pagine del sito “riservate”, ossia che richiedono il login per consentire l’accesso al loro contenuto, possono contenere questo prologo:

n In questo modo, se qualcuno tentasse di accedere direttamente alla pagina protetta digitandone l’URL nel browser, verrebbe automaticamente redirettoalla pagina in cui effettuare il login

38

Mantenimento dello stato

n L’oggetto Session realizza il concetto di “mantenimento dello statomantenimento dello stato”

n Permette di realizzare una sequenza di sequenza di interazioniinterazioni: ad ogni nuova richiesta, la comunicazione tra il client e il server “non non ricomincia da caporicomincia da capo”

n Il server mantiene informazioni riguardo il client e il codice ASP può accedere a tali informazioni per personalizzare lpersonalizzare l’’outputoutput

Page 20: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

20

39

Implementare le sessioni…

n Esistono in sostanza due soluzioni per tenere traccia delle sessioni:üü Soluzione basata sui Soluzione basata sui cookiecookie

L’ID della sessione viene mantenuto sul client sottoforma di cookie e inviato all’interno di ogni richiesta HTTP. Non affidabile se il client consente di disattivare i cookie…

üü Soluzione basata sulla Soluzione basata sulla riscritturariscrittura degli URLdegli URLL’ID della sessione viene passato come suffisso all’URL, da dove il server Web provvede ad estrarlo. Questo artificio richiede però che tutti gli eventuali link all’interno della pagina HTML restituita, così come i target di tutti i form, vengano opportunamente riscritti appendendo l’ID della sessione corrente.

40

Applicazione ASP

n Una applicazione ASPapplicazione ASP è un insieme di documenti (“pagine ASP”) collocati nella stessa directory virtualedirectory virtualeSi 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

Page 21: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

21

41

Applicazione ASP

n L’oggetto SessionSession mantiene informazioni localilocali ad una singola comunicazione, ossia relative ad una particolare sequenza di interazioni tra un certo cliente il server Web

n L’oggetto oggetto ApplicationApplication è invece un oggetto globaleglobale, relativo all’intera applicazione, anch’esso in grado di memorizzare coppie <nome, valore><nome, valore>

n Di fatto, l’oggetto Application incapsula lo stato stato delldell’’intera applicazioneintera applicazione ASP

42

Applicazione ASP

Web server

Application 1 Application 2

Session 1 Session 2 Session 3 Session 4

Page YPage X

Page ZPage A

Page B

VariablesVariables

VariablesVariables Variables Variables

n La “mappa” di un server Web sul quale girano due applicazioni ASP:

Page 22: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

22

43

L’oggetto Application

n L’oggetto Application per una certa applicazione ASP viene creatocreato dal framework non appena viene inoltrata al server una richiesta per una pagina ASP nella relativa directory virtuale

n L’oggetto viene distruttodistrutto soltanto quando il server viene riavviato oppure in conseguenza di un esplicito comando

44

n L’oggetto Application può essere utilizzato per memorizzare variabili globali, ad esempio il numero di utenti connessi all’applicazione:

n Il codice illustrato sopra può essere inserito nella funzione Session_OnStart, invocata alla creazione di ogni sessione…

L’oggetto Application - Esempio

<% Application("UserNum ") = 0 %>......Application("UserNum ") = Application(" UserNum ") + 1%>......You are user: <%= Application("UserNum ") %>

Page 23: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

23

45

n Ogni applicazione ASP contiene un file chiamato global.asa, all’interno del quale èpossibile definire 4 funzioni personalizzate:

ü Application_OnStart(invocata quando l ’oggetto Application viene creato)

ü Session_OnStart(invocata quando l ’oggetto Session viene creato)

ü Session_OnEnd(invocata quando l ’oggetto Session viene distrutto)

ü Application_OnEnd(invocata quando l ’oggetto Application viene distrutto)

Il file global.asa

46

n Negli script ASP è possibile far uso di sei oggetti built-in gestiti dal framework

ü SessionMemorizza variabili locali ad una sessione (descritto in precedenza)

ü ApplicationMemorizza variabili globali per un’applicazione ASP (descritto in precedenza)

ü RequestRappresenta la richiesta effettuata dal client , ne riporta l’indirizzo IP, gli eventuali cookie inviati, i valori dei parametri allegati alla richiesta (es. i campi di un form), ecc…

ü ResponseRappresenta la risposta restituita dal server, espone un’interfaccia che consente di scrivere in output l’HTML da generare, di redirigere l’utente a un’altra pagina, ecc...

ü ServerMemorizza informazioni relative alla macchina su cui l’applicazione viene eseguita

ü ASPErrorRiporta informazioni sull’ultimo errore generato dall’applicazione – utile per in fase di debugging

Gli oggetti built-in

Page 24: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

24

47

Come funziona il server Web

nn SemplificandoSemplificando, un server Web implementa il seguente algoritmo:

WEBSERVER

1. Resta in ascolto sulla porta TCP 80 (porta HTTP)2. Quando arriva una richiesta per una risorsa (ad esempio,

products.asp), analizza l’estensione di quella risorsa e:a) Se l’estensione è “.HTM” o “.HTML” (come in index.html o

homepage.html) recupera il file e restituisci il suo contenuto come risposta

b) Altrimenti, verifica se esiste un programma registrato per gestire quell’estensione (nel web server IIS di Microsoft, un simile programma è detto “filtro”)

c) Questo programma viene lanciato fornendo in input l’URL della risorsa richiesta (www.mysite.org/hom.asp) e l’output del programma viene restituito al client come risposta

Registro delle estensioni gestite

../program1.exe.asp

……

../program3.exe.aspx

../program2.exe.jsp

ProgrammaEstensione

48

Oltre ASP…

n ASP è una tecnologia ormai consolidata. Tra i suoi successori, J2EE…

Componenti lato server: Componenti lato server: EnterpriseEnterprise Java Java BeanBean

Apache o Apache o JSERVERJSERVER

Page 25: Database e Web - le Active Server Pagesbias.csr.unibo.it/golfarelli/LabDB/MaterialeDidattico/...nIl server Web, insieme con le pagine ASP che realizzano la logica applicativadel sito,

25

49

Oltre ASP…

n …e ASP.NET

SimpleSimple ObjectObject Access Access ProtocolProtocol

IISIISXMLASP.NET

SOAP

Componenti lato server

FrameworkADO.NET

Tutte le comunicazioni Tutte le comunicazioni sono basate su XMLsono basate su XML

Integrato nel Integrato nel sistema operativo, sistema operativo, gestisce primitivegestisce primitivedi sicurezza e di sicurezza e transazionitransazioni