|
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.
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 introdotto 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).
|