Database e Web - le Active Server Pages -



Documenti analoghi
19. LA PROGRAMMAZIONE LATO SERVER

Obiettivo dell esercitazione

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Corso di Informatica Modulo T3 B2 - Database in rete

Database e reti. Piero Gallo Pasquale Sirsi

Esercizio data base "Biblioteca"

Registratori di Cassa

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Siti web centrati sui dati (Data-centric web applications)

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

Bibliografia: Utenti e sessioni

Lezione n 1! Introduzione"

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Applicazioni web centrati sui dati (Data-centric web applications)

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

Data Base in Internet

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Manuale Utente Albo Pretorio GA

Impostare il browser per navigare in sicurezza Opzioni di protezione

Mac Application Manager 1.3 (SOLO PER TIGER)

Reti di Calcolatori. Il Livello delle Applicazioni

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Dispensa di database Access

Come modificare la propria Home Page e gli elementi correlati

ESERCITAZIONE Semplice creazione di un sito Internet

I DATABASE Database relazionale

Wi-Pie Social Network Punti di accesso alla Rete Internet Manuale d'uso

Lezione II: Web server e ambiente di lavoro

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

Mini guida all utilizzo del nuovo sistema on-line di Ciessevi

Application Server per sviluppare applicazioni Java Enterprise

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

Guida all accesso al portale e ai servizi self service

Reti di Telecomunicazione Lezione 6

Corso di Informatica Modulo T3 B1 Programmazione web

Access. P a r t e p r i m a

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

GESGOLF SMS ONLINE. Manuale per l utente

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

Siti interattivi e dinamici. in poche pagine

SOMMARIO... 3 INTRODUZIONE...

Express Import system

MODULO 5 Appunti ACCESS - Basi di dati

RELAZIONE DI PROGETTO DELL ESAME STRUMENTI PER APPLICAZIONI WEB

Manuale Utente Amministrazione Trasparente GA

Informatica. Prof. M. Colajanni Università di Modena Reggio Emilia

Si fa comunque presente che dentro il portale acquistinretepa.it sotto la voce HELP (vedi fig. successiva), si trovano tutti gli strumenti atti a

Guida alla compilazione on-line delle domande di Dote Scuola A.S per le Famiglie INDICE

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

1. BASI DI DATI: GENERALITÀ

Sistema per scambi/cessioni di Gas al Punto di Scambio Virtuale

Cosa è un foglio elettronico

Organizzazione degli archivi

Università degli Studi di Padova Centro di Calcolo di Ateneo

GUIDA UTENTE PRIMA NOTA SEMPLICE

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

1) GESTIONE DELLE POSTAZIONI REMOTE

Al giorno d oggi, i sistemi per la gestione di database

Corso Creare Siti WEB

Guida per la registrazione alla piattaforma di Gestione dei Corsi per il Consulente Tecnico Telematico

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

Procedura SMS. Manuale Utente

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Sistema Gestionale FIPRO. Dott. Enea Belloni Ing. Andrea Montagnani

GRUPPO CAMBIELLI. Posta elettronica (Webmail) Consigli di utilizzo

Database 1 biblioteca universitaria. Testo del quesito

Istruzioni di accesso alla propria casella di posta elettronica tramite Zimbra Web Mail

Basi di Dati e Microsoft Access

Guida alla compilazione on-line delle domande di Dote Scuola A.S per le Famiglie INDICE

Questa guida vi illustrerà i principali passaggi da eseguire per l'inserimento dei Bandi di gara.

Modulo InWEB di InFarmaClick. Specifiche tecniche per l interfacciamento con i software gestionali di farmacia. Livello API 2005.

La VPN con il FRITZ!Box Parte II. La VPN con il FRITZ!Box Parte II

FPf per Windows 3.1. Guida all uso

Le query. Lezione 6 a cura di Maria Novella Mosciatti

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Lezione III: Oggetti ASP e interazione tramite form HTML

Sistema di gestione Certificato MANUALE PER L'UTENTE

SIEMENS GIGASET S450 IP GUIDA ALLA CONFIGURAZIONE EUTELIAVOIP

Manuale Helpdesk per utenti

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

VBScript. VBScript. Visual Basic Scripting Edition. Linguaggio di script per browser e server Microsoft Deriva da Visual Basic, ma è interpretato

CONTENUTI 1. INTRODUZIONE CONCETTI BASICI SU EQUINOX CMS XPRESS ACCESSO A EQUINOX CMS XPRESS PAGINA D INIZIO...

Client - Server. Client Web: il BROWSER

sito web sito Internet

Informatica per la comunicazione" - lezione 13 -

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.

Manuale Servizio NEWSLETTER

ALICE AMMINISTRAZIONE UTENTI WEB

Transcript:

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

Il modello client-server Il modello client-server è un paradigma astratto. In concreto, può assumere diverse forme I vari sistemi classificabili come client-server si differenziano in base ai seguenti aspetti: Mezzo di comunicazione (posta, voce, telefono, ) Contenuto della richiesta e della risposta (dati, ) Metodo di reciproca identificazione e localizzazione (credenziali, coordinate geografiche, indirizzo, ) Natura del servizio (vendita, calcolo, archiviazione, ) Mantenimento della storia, ovvero ciò che un server registra informazioni sui client che ha servito (preferenze, stato, ) Luogo di memorizzazione delle suddette informazioni (sul lato server o sul lato client, ) 3 Esempio una biblioteca Uno studente (client) si reca in una biblioteca (server) per ottenere il prestito di un libro (servizio offerto) La richiesta avviene tramite uno scambio vocale Il contenuto 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 L identificazione del client avviene tramite l esibizione di una tessera. La biblioteca è localizzata tramite il suo indirizzo Il servizio effettuato è (ovviamente) il prestito del libro La biblioteca mantiene informazioni 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 (sul lato server) in un registro cartaceo o informatico 4

Esempio un supermercato Una persona (client) si reca in un supermercato (server) per acquistare dei prodotti (servizio offerto) La richiesta avviene tramite uno scambio vocale Il contenuto della richiesta è l insieme dei prodotti che si intende acquistare, e il denaro necessario per il pagamento Non occorre identificare il client. La localizzazione del supermercato avviene tramite il suo indirizzo Il servizio effettuato è (ovviamente) la vendita di prodotti Il supermercato non mantiene informazioni 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 sul lato client 5 Esempio un bancomat Una persona (client) si reca presso un bancomat (server) per prelevare denaro in contanti (servizio offerto) La richiesta avviene presentandosi allo sportello automatico, inserendo la tessera ed effettuando selezioni da un menu di opzioni Il contenuto della richiesta è la quantità di denaro che si intende ritirare, la tessera del bancomat e il codice segreto L identificazione del client avviene tramite il codice PIN e la tessera. La localizzazione del bancomat avviene tramite ricerca Il servizio effettuato è (ovviamente) il prelievo di denaro Il bancomat (in realtà, la banca ) mantiene la storia dei propri clienti, registrando la quantità di denaro residua Queste informazioni sono memorizzate sul lato server 6

Il World Wide Web Il modello client-server applicato al Web consiste nella richiesta di una risorsa da parte di un programma client e nella restituzione di quella risorsa (se esistente) da parte di un programma server Il programma client è un Web browser Il programma server è un Web server 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 HTTP 7 Il World Wide Web WEB BROWSER 1. Richiesta documento http://www.google.it/index.html WEB SERVER 2. Restituzione file <html> <title>google</title> <body> </body> </html> 3. Rendering del file HTML da parte del web browser URL (Uniform Resource Locator) http://www.google.it/index.html Protocollo Localizzazione del server Contenuto richiesta (nome della pagina) 8

Il World Wide Web statico Nel modello originario del WWW, le richieste inoltrate dai client ai server Web riguardano esclusivamente file HTML Questo significa che due richieste per la stessa risorsa otterranno la stessa 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) A questo schema statico, in cui la risposta ottenuta non dipende né dal contesto né da eventuali criteri di personalizzazione, viene contrapposto il modello dinamico 9 Il World Wide Web dinamico Quasi tutti i siti Web, attualmente, realizzano il modello dinamico: 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. 10

Il World Wide Web dinamico 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. 11 Il World Wide Web dinamico In un sito Web dinamico il contenuto della risposta può variare da richiesta a richiesta Tuttavia, in genere, ciò che cambia è solo una parte del documento HTML restituito, mentre la struttura della pagina resta perlopiù invariata Allora, è possibile realizzare un sito Web dinamico definendo a priori un template, una struttura invariante per la pagina HTML, e completando il template con i dati variabili calcolati al momento della richiesta 12

Active Server Pages Microsoft Active Server Pages (ASP) è uno strumento semplice per la realizzazione di siti Web dinamici che permette di combinare codice HTML e codice di script <!-- 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> 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 13 ASP: Quadro tecnologico ASP è parte di un architettura complessa in cui figurano diversi componenti IIS 14

Cos è ASP? Il framework ASP mette a disposizione: Un linguaggio di scripting che consente di generare codice HTML per via programmatica Un ambiente di esecuzione che permette di interfacciarsi con il server Web attraverso i cosiddetti oggetti built-in Tecnologia ActiveX e COM per collegarsi a basi di dati non soltanto relazionali 15 Active Server Pages e DB Nell esempio precedente, la porzione di codice script verificava il valore assunto da una variabile globale ed emetteva un messaggio differente a seconda dell orario in cui la richiesta veniva effettuata 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ù database Questi database possono a loro volta trovarsi su una macchina differente da quella su cui viene eseguito il server Web, e ne possono esistere più copie (per ridurre il rischio di perdita di dati a fronte di malfunzionamenti e per aumentare le prestazioni) 16

MDAC (Microsoft Data Access Components) Microsoft Data Access Components è lo stack di componenti per l accesso a fonti dati Applicazione web web ADO ADO OLE OLE DB DB ODBC ODBC DATI DATI SQL SQL SQL SQL Server Server Oracle Oracle Ecc. Ecc. DATI DATI NON NON SQL SQL Testo Testo Video Video Ecc. Ecc. 17 ADO (ActiveX Data Objects) Gli ActiveX Data Object sono una famiglia di controlli ActiveX che fornisce un interfaccia di programmazione per il collegamento con basi di dati L interfaccia ADO è una collezione di operazioni di alto livello e si basa, a sua volta, su comandi OLE DB di piùbasso livello 18

Interfacciarsi a DB con ADO Come accedere a una fonte dati con ADO 1. Connessione con data source (Connection). Opzionalmente, iniziare una transazione 2. Opzionalmente, creare un oggetto per rappresentare un comando SQL (Command) 3. Opzionalmente, specificare colonne, tabelle, e valori della query SQL come parametri variabili (Parameter) 4. Eseguire il comando (Command, Connection, o Recordset) 5. Se il comando è row-returning, memorizzare le righe in un oggetto contenitore (Recordset) 6. Opzionalmente, creare una vista per ordinare, filtrare e navigare i dati (Recordset) 7. Modificare i dati: aggiungere, cancellare, modificare righe e colonne (Recordset) 8. Se appropriato, aggiornare il data source con le modifiche eseguite (Recordset) 9. In caso di transazione, accettare o rigettare i cambiamenti prima di terminare la transazione (Connection) 19 Interfacciarsi a DB con ADO Esempio di connessione ad un DB da ASP <% Stabilisce la connessione con unasorgente 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 usandoil metodo Open e usala connesione creata precedentemente strsql = SELECT FirstName, LastName & FROM Customers & WHERE LastName = Smith rscustomers.open(strsql, cn) Ciclasul record set e mostrai risultati Set 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> %> 20

Architettura a 3 livelli Dall architettura client-server tradizionale si evolve allora verso un architettura a 3 livelli (3-tier) Il server Web, insieme con le pagine ASP che realizzano la logica applicativa del sito, occupa il livello intermedio, tra il front-end (browser dell utente) e il back-end (server dei dati) CLIENT WEB SERVER DATA SERVER Front-end (Web Browser) Application Logic (ASP Files) Back-end (Databases) 21 Architettura a 3 livelli Esempio di pagina ASP per autenticazione Nel framework ASP, l oggetto Request incapsula la richiesta HTTP effettuata dal client e contiene tutti i parametri (valori dei campi dei form, ecc) [ ] <% Apreun recordset usandoil metodo Open e usala 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 autenticazione If (password = correctpassowrd) Then Response.Write <B>Benvenuto, & firstname &!</B>" Else [ ] %> 22

Architettura a 3 livelli Nell esempio del carrello virtuale, in un database potrebbero essere memorizzati gli ordini effettuati dai clienti e i relativi dettagli Esempio: 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-commerce già visto 23 Un problema Problema: in relazione al carrello virtuale, come può il server sapere quale 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 personalizzare il contenuto delle pagine HTML restituite? Occorrerà allora che le informazioni necessarie alla personalizzazione siano codificate, in qualche modo, nella richiesta stessa 24

Paragima di comunicazione 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 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 capo ) 25 Modello richiesta-risposta (metafora) che ore sono? le 15:50 come ti chiami? Andrea conosci Giorgio? sì Questo meccanismo banale di comunicazione è supportato, ma non modella comunicazioni articolate in cui la risposta ad una domanda può dipendere dagli scambi di messaggi avvenuti in precedenza e suo fratello? suo di chi? da quanto tempo stiamo conversando? dal momento in cui me l hai chiesto hai capito cosa ti ho chiesto? non mi avevi mai chiesto niente prima Il modello richiesta-risposta non supporta questo tipo di comunicazione. Dopo ogni risposta la conversazione è chiusa, e il server perde la memoria dello scambio 26

Molteplicità degli interlocutori Complicazione: consideriamo un server al quale vengono inoltrate richieste provenienti da diversi client Se il server è privo di memoria, non è mai in grado di riconoscere chi effettua le richieste E quindi impossibile per il server ricostruire le sequenze di messaggi che costituiscono le conversazioni In un applicazione Web, si vuole invece mantenere lo stato dell interazione nel tempo tra client e server, realizzando così una comunicazione tipo telefonata al di sopra di un sistema tipo posta 27 Per non perdere la memoria Nelle applicazioni Web è tipico che si voglia tener traccia delle richieste effettuate dal client (percorsi di navigazione, selezioni ) Occorre allora un meccanismo che consenta di riconoscere quando due messaggi fanno parte della stessa comunicazione Una possibilità potrebbe essere quella di basarsi sul riconoscimento del mittente di un messaggio 28

Il mittente Problema: 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? Consideriamo un esempio reale 29 Esempio Un sito Web che offre un servizio di consultazione online della posta elettronica. Effettuo login e accedo alla mailbox 30

Esempio Creo una nuova finestra dalla stessa istanza del browser e copio l URL nella barra degli indirizzi: tutto OK, accedo alla mailbox 31 Esempio Apro una nuova istanza del browser e copio l URL nella barra degli indirizzi: questa volta non vengo riconosciuto 32

Soluzione: le sessioni Tutte le richieste di pagine ad un server Web si svolgono all interno di una sessione. Le sessioni sono gestite dal server Web (session tracking) Una nuova sessione viene creata alla prima richiesta che non appartiene ad alcuna sessione, e viene distrutta tramite apposito comando oppure allo scadere di un certo tempo limite Una sessione rappresenta un contesto, un ambiente di comunicazione all interno del quale ha luogo una sequenza di interazioni (richieste/risposte) tra il client e il server 33 Sessione WEB BROWSER 1. Richiesta documento http://www.mysite.org/login.asp WEB SERVER contiene: infoautenticazione 3. Restituzione output HTML contiene: SessionID (es., AB135) 2. SessionID = CreaNuovaSessione() 4. Richiesta documento http://www.mysite.org/products.asp contiene: SessionID (AB135) 6. Restituzione output HTML personalizzato 5. Riconoscimento SessionID=AB135 34

L oggetto Session in ASP La sessione corrente nel contesto della quale il codice script di una pagina ASP viene eseguito è incapsulata dall oggetto Session L oggetto Session è in grado di memorizzare coppie <nome, valore>, del tipo: username Nome IDProdottiSelezionati IDOrdineAttuale numerotentativi formatopreferito Rossi ORD4513 4.JPG Valore AB12, BC455, CD330 35 L oggetto Session - Esempio 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: <% [ ] Effettua l autenticazione If (password = correctpassowrd) Then Response.Write <B>Benvenuto, & firstname & &!</B> Session( login )= OK Response.Redirect( www.mysite.org/homepage.asp ); Else Response.Write <B>Credenziali non valide</b> Response.Redirect( www.mysite.org/login.asp ); End If %> 36

L oggetto Session - Esempio Tutte le altre pagine del sito riservate, ossia che richiedono il login per consentire l accesso al loro contenuto, possono contenere questo prologo: <% Verificache il login sia stato effettuato If Not (Session( login )= OK ) Response.Redirect( www.mysite.org/login.asp ); End If %> [ ] In questo modo, se qualcuno tentasse di accedere direttamente alla pagina protetta digitandone l URL nel browser, verrebbe automaticamente rediretto alla pagina in cui effettuare il login 37 Mantenimento dello stato L oggetto Session realizza il concetto di mantenimento dello stato Permette di realizzare una sequenza di interazioni: ad ogni nuova richiesta, la comunicazione tra il client e il server non ricomincia da capo Il server mantiene informazioni riguardo il client e il codice ASP può accedere a tali informazioni per personalizzare l output 38

Implementare le sessioni Esistono in sostanza due soluzioni per tenere traccia delle sessioni: Soluzione basata sui cookie 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 riscrittura degli URL L 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. 39 Applicazione ASP 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 40

Applicazione ASP L oggetto Session mantiene informazioni locali ad una singola comunicazione, ossia relative ad una particolare sequenza di interazioni tra un certo client e il server Web L oggetto Application è invece un oggetto globale, relativo all intera applicazione, anch esso in grado di memorizzare coppie <nome, valore> Di fatto, l oggetto Application incapsula lo stato dell intera applicazione ASP 41 Applicazione ASP La mappa di un server Web sul quale girano due applicazioni ASP: Web server Application 1 Application 2 Page X Page A Page Y Page Z Page B Session 1 Session 2 Session 3 Session 4 Variables Variables Variables Variables Variables Variables 42

L oggetto Application L oggetto Application per una certa applicazione ASP viene creato dal framework non appena viene inoltrata al server una richiesta per una pagina ASP nella relativa directory virtuale L oggetto viene distrutto soltanto quando il server viene riavviato oppure in conseguenza di un esplicito comando 43 L oggetto Application - Esempio L oggetto Application può essere utilizzato per memorizzare variabili globali, ad esempio il numero di utenti connessi all applicazione: <% Application("UserNum ") = 0 %>... Application("UserNum ") = Application(" UserNum ") + 1%>... You are user: <%= Application("UserNum ") %> Il codice illustrato sopra può essere inserito nella funzione Session_OnStart, invocata alla creazione di ogni sessione 44

Il file global.asa 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) 45 Gli oggetti built-in Negli script ASP è possibile far uso di sei oggetti built-in gestiti dal framework Session Memorizza variabili locali ad una sessione (descritto in precedenza) Application Memorizza variabili globali per un applicazione ASP (descritto in precedenza) Request Rappresenta 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 Response Rappresenta 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... Server Memorizza informazioni relative alla macchina su cui l applicazione viene eseguita ASPError Riporta informazioni sull ultimo errore generato dall applicazione utile per in fase di debugging 46

Come funziona il server Web Semplificando, un server Web implementa il seguente algoritmo: WEB SERVER 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 clientcome risposta Registro delle estensioni gestite Estensione.asp.jsp.aspx Programma../program1.exe../program2.exe../program3.exe 47 Oltre ASP ASP è una tecnologia ormai consolidata. Tra i suoi successori, J2EE Apache o JSERVER Componenti lato server: Enterprise Java Bean 48

Oltre ASP e ASP.NET Tutte le comunicazioni sono basate su XML Simple Object Access Protocol SOAP Componenti lato server ADO.NET Framework ASP.NET XML IIS Integrato nel sistema operativo, gestisce primitive di sicurezza e transazioni 49