Sistemi Informativi sul Web
ID Azione: 44196
0LQLVWHURGHO/DYRURHGHOOD
5HJLRQH/RPEDUGLD
8QLRQH(XURSHD
8QLYHUVLWjGHJOL
6WXGL
3UHYLGHQ]D6RFLDOH
GL%HUJDPR
FSE 2001 Progetto Quadro N.11798
“Let-One – Languages, Economics, Technology”
ID Azione: 44196
Titolo Azione: Modulo Professionalizzante in Sistemi
Informativi
Titolo Dispensa
Sistemi Informativi sul Web
a cura di: prof. Giuseppe Psaila
Sistemi Informativi sul Web
ID Azione: 44196
INTRODUZIONE
Questo materiale integra i contenuti del corso di Sistemi Informativi, tenuto dal
Prof. Giuseppe Psaila presso la Facoltà di Ingegneria dell'Università degli
studi di Bergamo.
In particolare, questo materiale affronta il problema della realizzazione di
sistemi informativi basati sulla tecnologia del World Wide Web. Questi sistemi
informativi sono in rapida evoluzione e le tecnologie usate sono anch'esse in
rapida evoluzione, perciò i contenuti di questo materiale non sono da
considerarsi delle certezze assolute. Tuttavia, le idee di base su cui si fondano
le architetture Web non cambieranno nel prossimo futuro, pertanto i concetti
fondamentali riportati qui avranno valenza per parecchi anni.
In particolare, nel seguito vengono considerati i seguenti temi.
• Architetture client-server. Sono le architetture fondamentali su cui si basa la
tecnologia web. Pertanto sono alla base di tutti i discorsi.
• Architettura fondamentale del web. Il web si basa sul protocollo HTTP, che
forza un ben determinato modo di funzionare dei sistemi informativi basati
sul web. Questo modo di funzionare e l'architettura fondamentale delle
soluzioni per il web sono discusse.
• Architetture avanzate per i sistemi informativi basati sul web. I sistemi
informativi sono in ogni caso applicazioni complesse che richiedono
tecnologia complessa e l'integrazione di soluzioni tecnologiche eterogenee
tra di loro. Questo è ancor più vero per i sistemi informativi basati sul web;
le relative architetture software vengono discusse.
• I linguaggi di scripting. Una soluzione tecnica molto diffusa consiste nell'uso
di linguaggi di scripting sul lato server. Si spiega questa tecnologia con
alcuni esempi pratici.
Sistemi Informativi sul Web
ID Azione: 44196
APPLICAZIONI CLIENT-SERVER
Un’applicazione Client-Server è strutturata in due parti:
• sul lato server, risiede la parte più onerosa dell’applicazione, come la base
di dati o i programmi che richiedono operazioni complicate e lunghe;
• sul lato client, la gestione dell’interfaccia utente, possibilmente basata su
protocolli indipendenti dalla piattaforma; questo richiede quindi computer
non particolarmente costosi, ma dotati di buoni dispositivi grafici, di buoni
monitor e di dotazioni multimediali standard.
Questa soluzione permette di:
• avere una sola macchina molto costosa e estremamente potente che funge
da server;
• dotare ogni operatore di macchine piccole, poco costose, curate soprattutto
per quanto riguarda l’interazione con l’utente.
Storicamente, le architetture client-server non sono una novità. Negli anni '80 il
mondo UnIX era caratterizzato da diverse piattaforme basate su questi
concetti. L'esplosione del World Wide Web le ha riportate in auge, allargando
a qualsiasi tipo di architettura hardware e software questi concetti, operando
peraltro una forma di standardizzazione nel settore.
Sistemi Informativi sul Web
ID Azione: 44196
APPLICAZIONI CLIENT-SERVER SU WWW
Ogni applicazione nata per operare in ambito WWW è per sua natura basata
su un'architettura client-server.
Esempio: applicazione statica.
Una applicazione statica per WWW è un insieme di pagine HTML preparare
una volta per tutte, dove ogni pagina richiama altre pagine HTML.
Vediamo che cosa troviamo sui due lati dell'architettura.
Lato server:
• il Web Server, un programma che riceve le richieste di pagine e invia le
pagine ai richiedenti, attraverso il protocollo HTTP (Hyper Text Transfer
Prtotocol)
• il disco fisso, che funge da base di dati delle pagine.
Lato Client:
• il Web Browser (Netscape o Explorer o altro) che visualizza le pagine e
interagisce con l’utente.
Richiesta
Pagina
Browser
(Netscape o
Explorer)
Richiesta
Web
Server
Pagina
Sistemi Informativi sul Web
ID Azione: 44196
La figura mostra il parallelo tra i componenti hardware e i componenti software
coinvolti nell’architettura.
In particolare, le evoluzioni dell’architettura lasceranno immutata
l'organizzazione hardware, mentre cambierà l'organizzazione software.
Rispetto a quanto appena visto, questa architettura di base è troppo limitante
per poter costruire sistemi informativi complessi. La limitazione maggiore sta
nel fatto che le pagine sono predeterminate a priori, quindi i loro contenuti non
variano.
Questo porta ai cosiddetti Siti Vetrina, cioè siti web il cui contenuto non viene
mai aggiornato perché non è legato alle basi di dati dell'azienda stessa.
Invece, i sistemi informativi e le applicazioni in generale devono gestire
informazioni via via crescenti e mutevoli. Occorre quindi far evolvere
l'architettura appena vista. Le applicazioni basate sul web devono quindi
diventare reattive.
Sistemi Informativi sul Web
ID Azione: 44196
APPLICAZIONI CLIENT-SERVER SU WWW
Nel caso in cui l’applicazione deve essere reattiva, , si usa il protocollo CGI
(Common Gateway Interface).
Un programma CGI è un applicativo che viene invocato dal web server, su
precisa richiesta del client.
Tipicamente, questi programmi vengono invocati da un FORM (modulo)
contenuto in una pagina HTML: un form contiene una serie di campi con i
quali l'utente immette dei valori (per esempio, i propri dati personali, se sta
sottoscrivendo un servizio fornito da qualche azienda, oppure sta facendo
acquisti via Internet). L'elaborazione di questi dati deve essere fatta sul server,
quindi la soluzione statica non basta più: il protocollo CGI serve per mandare
ad un programma questi dati.
Browser
(Netscape o
Explorer)
Richiesta
Web
Server
Pagina
Richiesta
Risposta
Applicativo
CGI
Il programma CGI riceve dal Web Server le informazioni inviate dall'utente,
elabora le informazioni, quindi produce la pagina HTML tante con i risultati
dell'elaborazione, che viene spedita al client dal Web Server.
Questa soluzione fornisce un notevole miglioramento, ma la memorizzazione
dei dati è lasciata all'iniziativa del singolo programma CGI. Occorre poter
sfruttare la tecnologia delle basi di dati.
Sistemi Informativi sul Web
ID Azione: 44196
APPLICAZIONI CLIENT-SERVER SU WWW
Nel caso in cui l’applicazione ha bisogno di accedere ad una base dati
presente sul server, e` l’applicativo CGI a dover interagire con il DBMS.
Si ottiene così un'architettura chiamata 3-tier, perchè si formano 3
connessioni: una tra browser e web server, una tra web server e applicativo
CGI, una tra applicativo CGI e DBMS.
- Architettura 3-tier
Browser
(Netscape o
Explorer)
Richiesta
Web
Server
Pagina
Richiesta
Risposta
Query
Applicativo
CGI
DBMS
Risposta
I vantaggi offerti da questa architettura sono notevoli.
Infatti, è possibile sfruttare la tecnologia dei DBMS e le basi di dati stesse.
Vediamo nel dettaglio.
Il primo vantaggio pratico lo si ha nel fatto poter avere una fonte stabile per i
dati. Funzionalità offerte dai DBMS quali il salvataggio periodico dei dati
consentono di non dover reinventare l'acqua calda, con soluzioni posticce e
inaffidabili basate su file.
In secondo luogo, i meccanismi di protezione dei dati offerti dai database
(transazioni) consentono di gestire accessi multipli e contemporanei ai dati
Sistemi Informativi sul Web
ID Azione: 44196
(richieste HTTP provenienti da client diversi), garantendo la robustezza e la
consistenza ei dati.
Nel caso in cui si vogliano costruire servizi e sistemi che integrano funzionalità
legate al web con il sistema informativo interno all'azienda, questa architettura
consente di usare gli stessi dati del sistema informativo aziendale per i sistemi
web.
Per esempio, servizi di commercio elettronico richiedono necessariamente di
essere basati sulla base dati aziendale: innanzitutto, i listini dei prodotti
venduti in forma elettronica devono essere gli stessi presenti nel sistema
aziendale; in secondo luogo, una gestione totalmente elettronica delle
transazioni di commercio elettronico richiede una forte integrazione tra le
informazioni legate alle transazioni commerciali e le informazioni di natura
contabile e logistica, normalmente gestite dai sistemi informativi aziendali.
Morale: la base dati deve essere la stessa (almeno in parte).
Sistemi Informativi sul Web
ID Azione: 44196
STRUTTURA DI UNA APPLICAZIONE
Vediamo quale è la struttura tipica di un applicazione o di un sistema
informativo realizzato usando principalmente le tecnologie web.
Lato client:
• un insieme di pagine HTML.
• possibilmente una serie di applet Java.
• Possibilmente una serie di client side script.
Certamente, un'applicazione basata sul web è costituita da un'insieme di
pagine HTML, che possono essere definite in modo statico oppure generate in
modo dinamico da qualche programma basato sul protocollo CGI.
Le pagine HTML sono però statiche, nel senso che non hanno al loro interno
funzionalità di gestione procedurale dei campi dei form, né possono
modificare in modo autonomo il loro contenuto.
Per ovviare a questi problemi, si ricorre ad estensioni dell'HTML, tramite sue
soluzioni: apple Java e client-side script.
Un applet Java è un vero e proprio programma scritto nel linguaggio di
programmazione Java, di recente diffusione. Java ha come caratteristica
importante il fatto che i programmi Java sono indipendenti dalla piattaforma.
Questo è possibile grazie al seguente meccanismo:
• Il compilatore Java compila il programma e lo traduce in un formato che
non è il linguaggio macchina ma un formato di livello più alto, chiamato
Byte Code.
• Un programma Byte Code non può essere eseguito direttamente, ma
richiede uno specifico software, chiamato Java Virtual Machine; in questo
modo il Byte Code è indipendente dal particolare hardware (set di istruzioni
del micro-processore) e dal particolare sistema operativo.
• Il programma Byte Code può così essere eseguito su qualsiasi computer,
purché sia disponibile la Java Virtual Machine per quel computer e quel
sistema operativo.
Sistemi Informativi sul Web
ID Azione: 44196
Con queste caratteristiche, un programma Java può facilmente essere
trasferito sulla rete. Nell'ambito dell'HTML, è possibile inserire questi
programmi Java all'interno delle pagine HTML (questi programmi Java,
pensati per lavorare nelle pagine HTML, prendono il nome di Applet); essendo
programmi a tutti gli effetti, possono aggiungere funzionalità sofisticate alle
pagine (per esempio, una vera e propria interfaccia interattiva all'interno della
pagina).
Tuttavia, questa soluzione presenta un problema di efficienza: essendo dei
programmi, la loro dimensione può facilmente diventare significativa, quindi
possono sorgere problemi legati ai lunghi tempi di trasferimento attraverso la
rete.
Per ovviare ai problemi della soluzione basata su Applet JAva, sono stati
introdotti i client-side script.
Uno script è un programma scritto in qualche linguaggio di programmazione di
alto livello che non viene preventivamente compilato, ma interpretato durante
l'esecuzione riga per riga.
In particolare, se questi programmi/script vengono inseriti all'interno di pagine
HTML e inviati al client per essere eseguiti all'interno del browser, prendono il
nome di client-side script.
Questa soluzione ha il vantaggio della semplicità tecnica, ma lo svantaggio
della lentezza dell'esecuzione; pertanto, si presta bene se occorre aggiungere
piccole funzionalità alla pagina HTML, per esempio controllare che tutti i campi
obbligatori di un form siano stati inseriti, oppure verificare la correttezza dei
formati dei dati (formato dei numeri, delle date, ecc.).
In tal senso, sono due le principali tecnologie che vengono usate in questo
momento come client-side script: sono Java-script e VB-script.
Java -script è una variante semplificata e interpretata di Java, che viene
riconosciuta, con qualche differenza, dai maggiori browser; VB-Script è la
versione semplificata del Visual Basic di Microsoft e viene riconosciuta solo
dal browser MS Internet Explorer.
Sistemi Informativi sul Web
ID Azione: 44196
Sul lato server troviamo:
• i programmi CGI, che devono interagire con il DBMS, scritti in un linguaggio
di alto livello
• oppure i server-side script
• il DBMS con la sua base di dati.
Per quanto riguarda i programmi CGI scritti in un linguaggio di alto livello, le
soluzioni tipiche sono il C, il C++ e Java. In questo caso, i programmi devono
gestire, o direttamente o attraverso librerie specifiche (come per Java), il
protocollo CGI da un lato, mentre dall’altro devono connettersi a DBMS per
gestire i dati.
Questa soluzione va bene quando si devono realizzare sistemi informativi
complessi. Per facilitare la realizzazione e ottenere architetture più modulari e
meglio organizzate, si stanno diffondendo in questo momento gli Application
Servers, che sono degli strumenti potenti, ma complessi da usare, per
realizzare sistemi informativi complessi.
Se invece si vogliono realizzare sistemi relativamente semplici, la soluzione di
adottare i server-side script può essere una buona soluzione, che permette di
realizzare il sistema in tempi abbastanza rapidi.
Un server-side script è un programma, scritto in qualche linguaggio di alto
livello, annegato all'interno di una pagina HTML. In questo modo, è possibile
avere il controllo su quello che è l'output HTML che si genera eseguendo il
programma.
Un server-side script è eseguito sul server; viene invocato come se fosse una
pagina web, attraverso l'URL di richiesta della pagina; invece di essere una
pagina HTML che viene spedita al client, il Web server deve prima eseguirla,
interpretando il programma annegato al suo interno. Il risultao è HTML puro: al
client non arrivano tracce del fatto che è stato eseguito un programma.
I linguaggi più usati in questo momento come server-side script sono
VBScript, proposto da Microsoft per il suo web server, e PHP, che nasce nel
mondo UNIX e viene eseguito dal web server Apache.
Nel seguito mostreremo alcuni esempi di server-side script, facendo
riferimento alla proposta Microsoft, denominata ASP (Active Server Pages),
che è appunto basata sull'uso di VBScript come linguaggio di
programmazione..
Sistemi Informativi sul Web
ID Azione: 44196
INTERNET E INTRANET
Che cosa sia il mondo Internet è ormai chiaro ai più; invece, non è chiaro che
cosa sia il mondo Intranet.
Per Intranet si intende una rete confinata all'interno di un sistema informativo
aziendale e i relativi applicativi.
In realtà, dal punto di vista tecnico non vi sono differenze: gli stessi protocolli e
le stesse soluzioni tecniche adottate nel mondo Internet vanno bene anche
per le Intranet. Quello che cambia è la filosofia progettuale delle applicazioni,
perché cambiano le tipologie di utenti, i servizi da offrire e le velocità in gioco.
Quando un'applicazione viene sviluppata in un ottica Internet, in genere si
rivolge ad un insieme di utenti a priori sconosciuti, che cercano informazioni su
un determinato servizio, che eventualmente vogliono avere dei servizi per i
quali devono registrarsi e fornire i propri dati, ma che sono poco controllabili.
Inoltre, possono essere da qualsiasi parte del mondo e non avere a
disposizione versioni specifiche dei browser.
Questo vuol dire che i sistemi Internet devono essere il più semplici possibile
da usare (a prova di stupido), devono fornire solo le informazioni che si
vogliono rendere disponibili, essere veloci da trasferire.
I sistemi Intranet invece lavorano all'interno delle reti aziendali; quindi si sa
bene quali utenti devono accedere al sistema e quali tipologie di informazioni
e funzionalità (tipicamente differenziate da utente a utente) devono essere
messe a disposizione dei singoli utenti.
Di conseguenza, le applicazioni Intranet possono essere arricchite senza
troppi problemi con applet Java e altri contenuti che richiedono elevate
velocità di trasferimento. Inoltre, possono essere basate su architetture
complesse sul lato server che permettono di gestire in modo efficace la
complessa realtà aziendale (per esempio, gli Application Server).
Sistemi Informativi sul Web
ID Azione: 44196
ESEMPIO: CLIENTI E ARTICOLI
Vediamo ora un esempio di completo di form, protocollo CGI, server-side
script, basandoci su una piccola applicazione che consente di consultare un
elenco di clienti e un elenco di articoli
CREATE TABLE CLIENTI
( Codice int identity(1,1) primary key,
Nome varchar(40) NOT NULL,
Citta varchar(40) NOT NULL,
Provincia char(2) NOT NULL )
CREATE TABLE ARTICOLI
( Codice varchar(10) primary key,
Descr varchar(30) NOT NULL,
Prezzo float(8) NOT NULL,
Categoria varchar(10) NOT NULL )
Nel seguito, descriviamo le soluzioni tecnologiche specifiche e il modo fi
funzionare del protocollo CGI.
Sistemi Informativi sul Web
ID Azione: 44196
PROTOCOLLO CGI
Come detto, sttraverso il protocollo CGI, una pagina HTML può mandare dati
e ricevere dati dal server.
Vi sono due metodi di comunicazione.
GET. Attraverso questo metodo, si accoda all’URL un insieme di parametri
con associato un preciso valore.
Il programma lanciato sul server riceve questi parametri come variabili di
ambiente.
POST. Attraverso questo metodo, qualsiasi dato viene inviato al server come
se fosse il contenuto di un messaggio di posta elettronica.
Il programma lanciato sul server riceve il contenuto del messaggio sullo
standard input.
In entrambi i casi, il programma lanciato sul server risponde inviando dati o
pagine sullo standard output.
Il web server redirige opportunamente lo standard input e lo standard output
del programma, in modo da gestire la comunicazione con il client.
Sistemi Informativi sul Web
ID Azione: 44196
PROTOCOLLO CGI: FORM
Esempio: ricerca di articoli.
Pagina HTML.
<html>
<head>
<title>Articoli da Cercare</title>
</head>
<body>
<font face="Verdana, Arial, Helvetica">
<form method="*(7" action="RicPrezzo.asp">
<p>Articoli da Cercare per Fascia di Prezzo</p>
<p> Prezzo Minimo
LQSXWW\SH WH[WQDPH SUH]]RPLQDO ULJKW! </p>
<p> Prezzo Massimo
LQSXWW\SH WH[WQDPH SUH]]RPD[! </p>
<p!LQSXWW\SH VXEPLWYDOXH ,QYLDQDPH %!
LQSXWW\SH UHVHWYDOXH 5HLPSRVWDQDPH %!</p>
</form>
</body>
</html>
In neretto sono state evidenziati gli elementi caratteristici che sono coinvolti
nel processo di comunicazione.
Nella pagina successiva, vediamo come compare il form nella finestra del
browser.
Sistemi Informativi sul Web
ID Azione: 44196
PROTOCOLLO CGI: FORM
Con il metodo GET:
Le informazioni inserite nei campi della form vengono mandati al server
costruendo l’URL come segue
http://www.host.it/RicPrezzo.asp?prezzomin=10&prezzomax=20
dove RicPrezzo.asp è il server-side script invocato. Si noti che i valori dei
campi prezzomin e prezzomax sono specificato dopo il punto interrogativo.
Questa soluzione presenta due limiti: il primo è dato dal fatto che le
informazioni viaggiano in chiaro; il secondo è dato dal limite di caratteri di un
URL, che è di 128.
Per ovviare a questi limiti, si può usare il metodo POST.
Sistemi Informativi sul Web
ID Azione: 44196
PROTOCOLLO CGI
Che cosa riceve il programma sul server, con il metodo POST.
Il programma riceve due variabili d’ambiente, una che indica il metodo
utilizzato, l’altra che indica il numero di caratteri ricevuto.
Variabili di ambiente
REQUEST_METHOD = POST
CONTENT_LENGTH = 25
I valori dei parametri arrivano sullo standard input del programma, nel modo
seguente.
prezzomin=10&prezzomax=20
Quindi il formato è lo stesso. Semplicemente i dati arrivano seguendo un
canale diverso.
Il programma pertanto opera così:
• legge la variabile di ambiente con il metodo, e riconosce che deve usare il
POST;
• legge la variabile di ambiente ocn la lunghezza del messaggio;
• legge il messaggio dallo standard input, separando i vari campi;
• ora può aprire il database, preparare un comando SQL con l’istruzione di
inserimento, eseguire il comando, chiudere il database.
Sistemi Informativi sul Web
ID Azione: 44196
ESEMPIO: ELENCO CLIENTI
Vediamo un esempio di server-side script scritto in VBScript, che viene
invocato per avere un elenco di clienti.
Come abbiamo anticipato, VBScript è la versione script del Visual Basic. La
sua sintassi è semplice da capire e non comporterà problemi di lettura.
Il programma che vediamo adesso deve produrre una pagina HTML in modo
dinamico, creando un elenco di clienti con i dati prelevati dal database. Il
nome del file che lo contiene è ElencoClienti.asp
<html>
<head> <title>Elenco Clienti</title> </head>
<p align="center">Elenco Clienti</p>
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "DEMO","Demo","demo"
sql = "SELECT * FROM Clienti ORDER BY Nome"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn
%>
</font><table width="100%" border="1">
<thead>
<tr>
<td><b>Codice</b></td>
<td><b>Nome</b></td>
<td><b>Citta</b></td>
<td><b>Provincia</b></td>
</tr>
</thead>
<tbody>
Sistemi Informativi sul Web
ID Azione: 44196
<%
rs.MoveFirst
while Not rs.eof
%>
<tr>
<td>
<td>
<td>
<td>
</tr>
<%=rs.Fields("Codice").Value%> </td>
<%=rs.Fields("Nome").Value%> </td>
<%=rs.Fields("Citta").Value%> </td>
<%=rs.Fields("Provincia").Value%> </td>
<%
rs.MoveNext
wend%>
</tbody>
</table>
<p><a href="index.html">Home Page</a></p>
</body>
</html>
Si può notare che il programma è racchiuso all'interno di segmenti delimitati
da <% e %>: quando il web server incontra questi blocchi, sospende l'invio del
codice HTML al client e interpreta il codice VBScript.
Nel caso di cicli (while ... wend), si noti che il codice HTML al loro interno
viene rigenerato tante volte quante volte viene eseguito il ciclo.
In questo modo, è possibile scrivere un programma che genera HTML, avendo
sempre sott'occhio che cosa genera.
Sistemi Informativi sul Web
ID Azione: 44196
ESEMPIO: ELENCO CLIENTI
Il programma, una volta eseguito, produce una pagina HTML che contiene la
seguente schermata.
Sistemi Informativi sul Web
ID Azione: 44196
PASSI OBBLIGATI
Vediamo i passi (obbligati) che devono essere svolti dal programma per poter
svolgere il lavoro richiesto.
Creare un oggetto connessione con il database
Set conn = Server.CreateObject("ADODB.Connection")
Per accedere al database occorre creare una "connessione"; le connessioni
vengono gestite tramite opportune variabili, che vengono create sul server per
mezzo di una libreria apposita (ADODB.Connection").
Aprire la connessione con il database
conn.open "DEMO","Demo","demo"
Attraverso la variabile appena creata, la connessione deve essere aperta.
Servono 3 parametri: il nome del canale di comunicazione con il DBMS (che
prende il nome di connessione ODBC), il nome dell’utente e la password di
quell’utente. Nell’esempio la connessione ODBC prende il nome di DEMO,
l'utente ha nome Demo, la sua password è demo.
Preparare la query
sql = "SELECT *
FROM Clienti ORDER BY Nome"
Il database può essere interrogato solo per mezzo di query in SQL. Una
variabile stringa viene inizializzata con il il codice SQL della query.
Creare un Record Set (o cursore)
Set rs = Server.CreateObject("ADODB.Recordset")
Per eseguire la query occorre creare una variabile in grado di gestire
l'esecuzione della query e scandire le righe nella tabella risultate. Questa
variabile viene chiamata record set, ed è gestita da una libreria apposita.
Sistemi Informativi sul Web
ID Azione: 44196
Aprire il Record Set (con esecuzione dela query)
rs.Open sql, conn
La query deve essere eseguita. Tecnicamente, questa operazione viene
chiamata apertura del record set. Si osservi che oltre alla stringa con la query
da eseguire, si deve fornire anche la variabile che gestisce la connessione
aperta con il database.
Scandire il Record Set
rs.MoveFirst, rs.MoveNext
Il record set va scandito, riga per riga, per ottenere i valori dei singoli attributi
(campi). In particolare l’istruzione
rs.Fields("Codice").Value
restituisce il valore dell’attributo Codice della riga corrente.
Dato che questo valore deve essere inserito nell'HTML prodotto, questo può
essere fatto nel modo seguente (si noti l'uguale dopo <%)
<%=rs.Fields("Codice").Value%>
Sistemi Informativi sul Web
ID Azione: 44196
CONNESSIONI ODBC
Il problema di collegare un programma ad un DBMS per poter accedere ai dati
è un problema di vecchia data, risolto dai produttori di DBMS in varia maniera.
Negli anni scorsi è finalmente stato definito uno standard, chiamato ODBC
(Open Database Connectivity).
Si tratta di un'interfaccia di livello abbastanza basso che consente di collegarsi
ad un qualsiasi DBMS in modo semplice e trasparente.
Una connessione ODBC infatti preimposta i parametri che servono per
collegarsi con uno specifico DBMS e uno specifico database, gestendo
direttamente la macchina che ospita il DBMS, che a questo punto può essere
una qualsiasi macchina e un qualsiasi DBMS.
Il programma che deve accedere ai dati, semplicemente invoca la
connessione ODBC, invia il codice SQL e riceve i risultati delle query. Se le
impostazioni della connessione ODBC vengono cambiate, per esempio si
cambia il DBMS e/o il database, il programma non se ne accorge.
Un elemento importante del protocollo ODBC è la trasparenza rispetto alle
varianti dell'SQL. Infatti, benché SQL sia di per se uno standard
internazionale, vi sono piccole differenze tra i vari DBMS. Lo scopo del
protocollo ODBC è anche quello di gestire queste piccole differenze, senza
che il programma debba cambiare cambiando DBMS.
Sistemi Informativi sul Web
ID Azione: 44196
ESEMPIO: ELENCO ARTICOLI
Vediamo ora il file RicPrezzo.asp che viene invocato dal form HTML
precedentemente presentato. Ricordiamoci che questo programma riceve i
parametri che indicano il prezzo minimo e il prezzo massimo richiesti.
<p align="center">Elenco Degli Articoli</p>
<%
PrezzoMin = Request.QueryString("prezzomin")
PrezzoMax = Request.QueryString("prezzomax")
%>
<p align="center">con prezzo da <%=cstr(PrezzoMin)%>
a <%=cstr(PrezzoMax)%></p>
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "DEMO","Demo","demo"
sql
sql
sql
sql
=
=
=
=
"SELECT
sql & "
sql & "
sql & "
* FROM Articoli"
WHERE Prezzo >=" & cstr(PrezzoMin)
AND Prezzo <=" & cstr(PrezzoMax)
ORDER BY Descr"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn
%>
Sistemi Informativi sul Web
ID Azione: 44196
ESEMPIO: ELENCO ARTICOLI
Il programma produce la seguente tabella, estratta dalla pagina HTML
complessiva generata.
Rispetto al programma che genera l’elenco dei clienti, questo deve leggere le
informazioni inviate con il metodo GET. Questo lavoro è fatto dal seguente
frammento di codice.
PrezzoMin = Request.QueryString("prezzomin")
PrezzoMax = Request.QueryString("prezzomax")
Attraverso la funzione QueryString, si richiede il valore del campo prezzomin
(e prezzomax); il valore viene assegnato alle variabili omonime alla destra
dell'uguale.
Sistemi Informativi sul Web
ID Azione: 44196
Successivamente, occorre costruire la query
sql
sql
sql
sql
=
=
=
=
"SELECT
sql & "
sql & "
sql & "
* FROM Articoli"
WHERE Prezzo >=" & cstr(PrezzoMin)
AND Prezzo <=" & cstr(PrezzoMax)
ORDER BY Descr"
Si noti che il valore delle variabili viene inserito nella stringa che contiene la
query. Se il programma viene invocato con i valori 10 e 20, la query SQL alla
fine sarà
SELECT * FROM Articoli
WHERE Prezzo >=10 AND Prezzo <=20
ORDER BY Descr
Sistemi Informativi sul Web
ID Azione: 44196
METODO POST
Nel caso in cui il programma viene invocato con il metodo POST, occorre
usare una funzione diversa per leggere i valori dei campi del form.
Le due righe del precedente programma che leggono i valori dei campi
diventerebbero le seguenti.
PrezzoMin = Request.Form("prezzomin")
PrezzoMax = Request.Form("prezzomax")
dove al posto della funzione QueryString si usa la funzione Form.
Questa differenza si giustifica per il fatto che la fonte dei dati è diversa, in
accordo alla specifica del protocollo CGI.
Si può comunque notare come il VBScript mettà a disposizione la libreria
Request per accedere ai campi inviati dal form, senza lasciando quindi
trasparente al programma il funzionamento del protocollo CGI.