Corso di
ASP
Creare pagine html
interattive non è più un lavoro da professionisti. Oggi, grazie alle
active server pages è tutto più semplice e divertente. Impariamo a
programmare in asp in poche lezioni
di Nanni Bassetti nannib@libero.it
Superare
i limiti dell'html per creare dei siti sempre più rispondenti alle
esigenze dei visitatori è stato una delle mete a cui i programmatori di
linguaggi di scripting hanno puntato nel corso della storia del web. Dalle
prime pagine statiche, manifesto di un sito, si è progressivamente
arrivati non solo all'esplosione del multimediale, ma, soprattutto, al
diffondersi di pagine interattive, in grado non solo di affascinare, ma di
fornire un utile strumento a chi le volesse usare.
Di
linguaggi scripting ne esistono parecchi, alcuni più simili a veri e
propri linguaggi di programmazione, altri più facili. Il perl, ad esempio,
è il tipico caso di linguaggio complesso, ma molto efficace, utilizzato
per la creazione di cgi (common gateway interface) a livello professionale
e poco diffuso fra gli utenti medi, a causa della difficoltà di
apprendimento e di gestione della sua sintassi; inoltre, essendo nato in
ambiente Unix ha trovato non poche difficoltà ad affermarsi al di fuori
din una pur vasta cerchia di provider e professionisti del settore che
utilizzano questo sistema operativo. Un'altra difficoltà notevole per
l'utente medio è da sempre rappresentata dalla generale impossibilità di
eseguire i cgi al di fuori della directory cgi-bin del web server del
quale ci si serve, directory il cui accesso è limitato al web master. Solo
in rari casi l'amministratore di sistema consente l'esecuzione di script
perl (che hanno la possibilita' di eseguire operaziooni di lettura e
scrittura su disco) da una qualsiasi directory. Se ciò ha una
giustificazione a livello di sicurezza di un sito web, certo non ha
invogliato gli utenti ad utilizzare questo linguaggio che richiede una
"interazione" con provider e amministratori a volte troppo indaffarati per
dare ascolto alle insolite richieste di un cliente.
Superare
la staticità delle pagine web, mantenendo al contempo una semplicità di
programmazione che consenta a tutti di intervenire senza prima dovere
leggere voluminosi manuali è ora possibile grazie ai nuovi linguaggi di
scripting. Fra tutti si distingue sicuramente l'asp (active server pages)
per la rapidità e flessibilità di utilizzo che lo caratterizzano, che però
sono controbilanciate da uno svantaggio non indifferente; l'utilizzo di
questo linguaggio è confinato ai server Microsoft, come ad esempio a IIS,
e non funziona quindi con tutti gli altri server che popolano il web. La
sempre maggiore diffusione dei server Windows contribuisce però a rendere
meno limitante questo ostacolo e, tutto sommato, non è difficile vedere
diversi provider abbandonare il mondo Unix per le nuove possibilità
offerte da Windows NT.
Grazie
all'utilizzo delle pagine asp, l'utente può quindi creare dei documenti
che possono fornire informazioni, rispondendo in modo diverso alle
differenti richieste dei navigatori. Ma quali sono, in breve, i vantaggi
nell'utilizzo di questo linguaggio di scripting?
1) Le
pagine asp sono completamente integrate con i file html.
2) Sono
facili da creare e non necessitano di compilazione.
3) Sono
orientate agli oggetti e usano componenti server ActiveX.
Visti i
vantaggi, e viste anche le limitazioni cui abbiamo accennato in
precedenza, riassumiamo le tecnologie conivolte nello sviluppo e
funzionamento delle active server pages:
1)
Windows NT
2)
Protocollo tcp/ip
3) Un
web server che supporti Active Server, come IIS
4) In
via facoltativa, odbc (Open DataBase Connectivity) e un server
database.
Esaminando più da vicino
l'"anatomia" di questo genere di pagine possiamo constatare che esse sono
costituite da tre differenti parti:
1) Testo
2)
Marcatori html
3)
Comandi script
In
un documento con estensione .asp è consentito utilizzare variabili, cicli,
istruzioni di controllo, etc., grazie alla possibilità di richiamare la
sintassi un linguaggio di scripting, come ad esempio il vbscript e il
javascript, ma anche perl e rexx. La scelta del linguaggio dipende in
primo luogo dalle necessità del programmatore e dal tipo di esecuzione che
si vuole avere: se si volgiono eseguire gli script dal lato server è
preferibile utilizzare il vbscript, mentre se ci si vuole affidare alla
potenza degli "scripting engine" (motore che interpreta i comandi dei
linguaggi di scripting e li esegue) dei singoli navigatori è sicuramente
meglio utilizzare il javascript, semplice ed efficace.
Prima di
iniziare ad imparare la programmazione delle pagine asp tramite un buon
numero di esempi commentati, è bene dare un'occhiata preliminare alla
sintassi per capire come esso funzioni. Non intendiamo fare qui un elenco
completo di tutti i comandi: inizieremo con un insieme di istruzioni base
che amplieremo ed illustreremo nel corso delle lezioni utilizzando degli
esempi di codice che cerchino di insegnare a creare qualche cosa di
realmente utile.
Una
prima distinzione che possiamo operare a livello di codice sorgente è a
livello di comandi nativi, propri dell'asp, e comandi di scripting che
appartengono al particolare linguaggio script utilizzato. Tra i marcatori
fondamentali dell'asp ci sono sicuramente i delimitatori, che come
nell'html delimitano l'inizio e la fine di una sequenza di codice, e sono
rappresentati dai simboli:
<% e
%>
Ad
esempio il comando:
<%
x="ciao" %>
assegna
alla variabile x il valore "ciao".
Abbiamo
già detto che è possibile includere anche script nel codice asp e
utilizzare così funzioni create, ad esempio, in javascript o vbscript,
richiamandole tramite il comando nativo <% Call _ %>, come
nell'esempio 1 che mostra come costruire una pagina che visualizzi la data
del giorno corrente:
ESEMPIO1.ASP:
<% Call
PrintDate %>
<SCRIPT
LANGUAGE=JScript RUNAT=Server>
function
PrintDate()
{
var
x
// x è
un'istanza dell'oggetto Date
x
= new Date()
// il
comando Response.Write scrive la data sul navigatore
Response.Write(x.getDate())
}
// Questa è
la definizione della procedura PrintDate.
// Questa
procedura manderà la data corrente al navigatore.
</SCRIPT>
Dato che abbiamo inrodotto
il concetto di oggetto, accenniamo brevemente alla sua natura; un oggetto
è un’astrazione di una struttura dati, di cui non interessa sapere come è
implementata (information hiding), ma quali sono le operazioni possibili
su di essa.
L’asp
possiede degli oggetti precostituiti, sui quali si può operare
con i metodi, che sono delle funzioni intrinseche all’oggetto: per fare
un esempio, sull’oggetto automobile un metodo può essere rappresentato
dall’operazione di "fare_benzina", rappresentabile con una notazione del
tipo
automobile.fare_benzina. Sebbene si rassomiglino,
bisogna fare attenzione a non confondere i metodi dalle funzioni; queste
ultime infatti sono definite dal programmatore e risultano esterne
all’oggetto.
Ritornando all’eempio 1, la
funzione PrintDate definita in javascript è scritta tra i marcatori
<SCRIPT> e </SCRIPT> come sempre, però questa volta sono stati
inclusi gli elementi LANGUAGE=JScript e
RUNAT=server.
Dunque,
bisogna specificare obbligatoriamente quale tipo di linguaggio si sta
usando e se lo script deve essere eseguito dal alto client o sul server;
nel caso non venga specificato il parametro RUNAT, il valore predefinito
sarà "server".
Un
indubbio vantaggio che deriva dall'uso del delimitatore RUNAT di script è
costituito dal fatto che il codice sorgente non è mai presente nella
pagina html che viene spedita al navigatore dal server. Infatti, il
sorgente viene rielaborato dal server che invia come risultato una pagina
costruita "al volo" nella quale sono visibili solo i codici html e quelle
funzioni per le quali non sia stato specificato il valore
"server".
E'
interessante notare che non è possibile utilizzare i delimitatori <%
%> per definire una funzione, dato che non è possibile assegnare nomi a
blocchi di codice asp; in seguito vedremo come importare alcune funzioni
utilizzando il comando <!-- #include --> .
Passiamo
ora all'esame dell'oggetto Response, il quale consente di gestire
l'interazione fra il server e il client. Questo oggetto possiede una serie
di metodi che consentono di effettuare una serie di operazioni che avremo
occasione do psservare più dettagliatamente nelle varie lezioni di cui si
compone questo corso. Ecco di seguito un elenco dei metodi sopra
citati:
AddHeader
AppendToLog
BinaryWrite
Clear
End
Flush
Redirect
Write
Impariamo ora ad usare il
metodo
Response.Write
Tenendo
a mente che questo metodo richiede una stringa di testo tra virgolette, o
una funzione che restituisca una stringa, esaminiamo l'esempio 2 che
illustra come creare e chiamare delle procedure usando due differenti
linguaggi di scripting (vbscript e JScript).
ESEMPIO
2.ASP :
<html>
<body>
<table>
<!-- la
table non ha i tag <td><tr> ecc. ecc. essi saranno definiti
-->
<!--
dalla subroutine Echo definita dallo script in vbscript -->
<!-- cioè
il comando <% Call Echo %> chiamerà la subroutine e restituirà
-->
<!-- i
valori che compileranno la tabella. -->
<%
Call Echo %>
</table>
<!--
stesso discorso soltanto che Print Data restituisce soltanto il valore
-->
<!--della
data corrente perch‚ chiama la funzione definita nello script
<!--JavaScript.
-->
<%
Call PrintDate %>
<SCRIPT
LANGUAGE=VBScript RUNAT=Server>
Sub
Echo
Response.Write
"<tr><td> Name </td><td>Value
</td></tr> "
'
L'istruzione Set imposta la variabile Params
Set
Params = Request.QueryString
' il For
itera per ogni stringa inserita nell'URL dopo il punto ?
' es.
http://www.italystore.com/esempio2.asp?pippo=3 e Params(p) prende il
parametro 3
For
Each p in Params
Response.Write
" <tr><td>" & p & "</td><td> " &
Params(p) & "</TD></TR> "
Next
End
Sub
</SCRIPT>
<SCRIPT
LANGUAGE=JScript RUNAT=Server>
function
PrintDate()
{
var
x
x
= new Date()
Response.Write(x.toString())
}
</SCRIPT>
Nel
precedente esempio abbiamo introdotto la Request, che può essere
definito come il primo oggetto che incontriamo ad essere intrinseco al
server, dato che esso rappresenta l'elemento di connessione tra il
programma client ed il web server. In pratica, esso si occupa di
trasmettere le informazioni provenienti da alcune variabili del server (le
collection), mentre l’oggetto Response si occupa dell’interazione tra
server e client tramite l’utilizzo di metodi quali write, che permette la
scrittura a video.
La
sintassi propria di questo elemento è:
Request[.Collection]
("variabile")
Vi
possono essere varie collection, ed infatti ne esamineremo alcune nelle
prossime lezioni; sempre nell'esempio precedente potete osservare
l'utilizzo della collection QueryString, che accetta le stringhe
provenienti da un form oppure inserite manualmente, formate da un punto
interrogativo seguito da un testo.
Ora, per
cominciare, date un'occhiata a questa semplice pagina asp che consente di
visualizzare il classico testo "Hello World !" in una pagina html. La
particolarità di questo testo consiste nel potere apparire in una
dimensione variabile da 3 punti per carattere fino a 7, grazie ad un
comando vbscript (For To) che controlla un ciclo di assegnazione di valori
alla variabile "i", la quale a sua volta definisce la grandezza del
parametro html SIZE; il ciclo viene effettuato su tutto ciò che si trova
tra For To e Next.
ESEMPIO
3.ASP :
<%
For i = 3 To 7 %>
<font
size=<%=i%>>Hello World!</font>
<% Next
%>
Prima di
concludere la lezione, vediamo un altro utilizzo dell'oggetto Request che
utilizzando il metodo ServerVariables, permette di richiedere al
server una delle variabili di sistema come ad esempio HTTP_USER_AGENT, la
quale identifica il nome del navigatore che il client sta usando in quel
momento.
ESEMPIO
4.ASP :
<%
a=Request.ServerVariables("HTTP_USER_AGENT")%>
<%
Response.write(a)%>
Per
concludere questa prima puntata, ricapitoliamo i passi necessari a creare
una pagina asp:
1)
Aprire un editor di testo (blocco note o Word), o un editor
html.
2)
Scrivere una pagina che inizi con e si concluda con
3)
Utilizzare i comandi <%_%> ed eventuali script
4)
Salvare il file con estensione .asp.
5)
Effettuare l'upload del file sul vostro sito.
6)
Lanciare il navigatore e collegarsi all'URL del vostro file
(es.
http://www.italystore.com/esempio3.asp).
Per chi
usa Windows 95 e vuole esercitarsi sugli asp, la cosa migliore che può
fare è procurarsi il Personal Web Server di Microsoft e far girare
off-line le proprie applicazioni, dato che le active server pages
funzionano solo in presenza di un server web Microsoft.
Abbiamo
iniziato con qualche pagina abbastanza semplice, solo per introdurre la
sintassi dell'asp e dei linguaggi di scripting ad esso connessi. Certo,
conoscere bene il javascript o il vbscript aiuta molto e qualche numero
arretrato di inter.net potrà darvi una mano, specialmente grazie al corso
di javascript apparso diversi mesi fa. Nel giro di qualche lezione
mostreremo qualche linea di codice davvero utile ed interessante,
affrontando più approfonditamente le potenzialità di questo linguaggio,
fino a discutere di applicazioni di una certa complessità come la
costruzione di un form di consultazione e aggiornamento di un database
remoto su web.
N.B.: i files .asp
vanno lanciati in questa maniera: http://www.pippo.com/prova.asp oppure se si
ha istallato il PWS si devono lanciare così: http://127.0.0.1/prova.asp il file prova.asp
si deve trovare in c:\intepub\wwwroot\prova.asp.
Per istallare il PWS
andate sul CD di Windows 98 e cercate nella cartella ADD-ON\PWS il file
setup.exe. I file .asp sono interpretati dal server e non si aprono col
browser come per gli html.
Cose
interessanti da fare ce ne sono parecchie, ma fino alla prossima puntata
vi consigliamo di consultare due siti di indubbio interesse:
http://www.activeserverpages.com
ASP in ITALIANO