|
ASP: la guida introduttiva
Capitolo 2 - gli elementi di ASP
2.0 Fare
scripting con ASP
2.1 Server
Side Include
2.2 Struttura
di una pagina ASP
2.3 La
fase di scripting e gli oggetti built-in
2.4 Gli
oggetti ActiveX
2.5 Una
pagina esemplificativa
2.0 - Fare scripting con ASP
ASP
permette di integrare due tipi di elementi distinti all'interno
di una pagina: elementi di scripting, che saranno eseguiti sul
server, ed elementi di testo semplice, che verranno invece
inviati inalterati al client senza essere processati dal server.
Gli elementi di scripting sono distinti dal resto della pagina
che li contiene in quanto racchiusi tra i due tag speciali
<% e %>.
Questa non è comunque l'unica maniera di includere uno script in
una pagina ASP. E' altresì possibile usare una sintassi del
tipo:
<script language="JScript" runat="server">
// corpo dello script
</script>
La
sintassi utilizzata in questo caso ricorda molto da vicino
quella necessaria per inserire script client-side in una
qualsiasi pagina HTML. L'unica cosa che rende distinta la
dichiarazione di uno script di questo tipo da quella relativa
allo scripting client-side risiede nell'attributo
runat="server" aggiunto al classico
tag <script>. Il vantaggio dell'utilizzare questa sintassi sta
nel fatto di poter selezionare l'utilizzo di più linguaggi di
scripting all'interno di una stessa pagina, a differenza di <% e
%> che invece possono inglobare solamente script realizzati con
il linguaggio specificato alla prima riga del codice (<%@
LANGUAGE = JScript %>, ad esempio) oppure con il linguaggio
predefinito nel caso di assenza di questa riga (solitamente
questo è VBScript). Non si fermano comunque qui le differenze
delle due distinte sintassi. Oltre ad una differenza che non
tratteremo relativamente all'ambito di visibilità delle
variabili, c'è da dire che <% e %>, per quanto limitati dal
fatto di poter contenere script di un solo linguaggio, hanno una
migliore integrazione con le parti di testo semplice.
In ogni caso i due elementi costitutivi di una pagina ASP non
sono separati in due parti distinte del codice, anzi, spesso si
ritrovano profondamente mescolati tra di loro. Per rendere
meglio il concetto si consideri la seguente pagina ASP:
<%@ LANGUAGE = JScript %>
<html>
<head><title>Prova ASP</title></head>
<body>
<% for (i=1;i<=10;i++) { %>
<b>Riga numero <%=i%></b><br>
<% } %>
</body>
</html>
Questa pagina si limita a stampare, in output HTML, 10 righe
numerate. Si osservi però la struttura mediante la quale è stato
realizzato il tutto: codice JScript eseguibile sul server e
codice HTML da inviare al browser si autocompenetrano, e questo
è possibile proprio grazie alle caratteristiche offerte dall'uso
di <% e %>. Si noti poi anche l'utilizzo della forma abbreviata
<%=i%>, del tutto equivalente a <% Response.Write(i); %>, ma
molto più semplice e veloce da digitare e da rileggere in
seguito, specie in questi casi di codice HTML intervallato da
parti JScript.
2.1 - Server Side Include
Questa panoramica iniziale su ASP non sarebbe completa senza
accennare alla libreria dei comandi Server Side Include (SSI) e
al più importante di essi: #include. I
comandi SSI si presentato a prima vista come dei semplici
commenti HTML, se non per il fatto che rispettino sempre la
seguente sintassi:
<!--#nome_comando attributo="valore"-->
I
comandi aderenti a questa sintassi, al pari degli script,
vengono valutati dal server prima di essere "girati" al client.
Qualora il server dovesse riuscire a riconoscere un comando per
lui appetibile lo eseguirà, e solo l'output di questo comando
sarà trasmesso al browser del visitatore della pagina. Il
comando SSI più utilizzato in ambito ASP è, come già accennato,
#include. Questo comando si comporta in maniera analoga
all'omonima direttiva per il compilatore di C++:
<!--#include file="menu.htm"-->
Questa riga di codice verrà automaticamente rimpiazzata dal
server con il contenuto del file menu.htm
residente nella stessa cartella che contiene la pagina ASP in
questione. L'utilità è evidente: grazie ad #include non sarà più
necessario copiare lo stesso codice in più pagine in quanto
questo potrà essere tranquillamente conservato in un unico file
esterno. Una modifica su questo file, poi, si rifletterà
automaticamente su tutte le pagine che lo includono. Le
applicazioni base sono due, una relativa alla parte HTML di una
pagina ASP, l'altra relativa alla parte di puro scripting. Nel
primo caso, infatti, sarà possibile ripetere lo stesso template
HTML all'interno di tutte le pagine che lo includono. Si pensi
ad esempio al classico caso di un menù per un sito Web: se lo
stesso menù deve presentarsi su 200 pagine distinte sarà
sicuramente più conveniente includerlo in esse mediante SSI che
non con il classico copia-incolla del codice. Un'aggiornamento
sul file contenente questo menù, poi, aggiornerà automaticamente
il menù di tutte le pagine del sito. La praticità è notevole.
#include, comunque, non si limita ad integrare solo HTML: con
esso è possibile inserire ogni tipo di file all'interno di una
pagina, e quindi anche script server-side contenenti magari
delle funzioni standard da utilizzare in più pagine. Torneremo
poi sull'argomento più avanti, per ora questo è tutto quello che
occorre sapere.
2.2 - Struttura di una pagina ASP
Riassumendo allora quanto detto sino ad ora possiamo concludere
che una classica pagina ASP può essere formata da quattro
distinti elementi: la dichiarazione del linguaggio di scripting
utilizzato (se presente deve necessariamente essere la prima
riga del file), i comandi SSI, gli script eseguibili sul server
e le parti "semplici" da inviare invariate al client. Imparare a
programmare con ASP significa avere padronanza di questi
elementi e saperli dosare in un giusto mix.
2.3 - La fase di scripting e gli oggetti built-in
La
parte sulla quale si focalizzerà maggiormente l'attenzione in
questa guida è quella relativa allo scripting. Le possibilità
offerte da ASP sono molteplici. Nel caso dello scripting
client-side il browser mette a disposizione del linguaggio
diversi oggetti relativi a quel dato ambito, come ad esempio
l'oggetto navigator per rilevare quale
sia il browser in uso. Analogamente ASP mette a disposizione del
linguaggio di scripting 5 diversi oggetti che, grazie ai loro
metodi, consentono il controllo del server e della comunicazione
server-client. Questi 5 oggetti particolari, che sono detti
oggetti built-in, vengono automaticamente istanziati all'inizio
dell'esecuzione di ogni pagina. Questi sono:
|
Response |
gestisce l'output del codice |
|
Request |
gestisce l'input del codice |
|
Server |
assolve a funzionalità relative all'ambito di esecuzione |
|
Session |
gestisce le sessioni degli utenti |
|
Application |
permette di condividere informazioni tra più utenti di una
stessa applicazione |
2.4 - Gli oggetti ActiveX
Il
linguaggio di scripting e gli oggetti built-in nulla potrebbero
in ASP senza poggiarsi su oggetti esterni, che in questo ambito
sono definiti secondo la tecnologia ActiveX, in grado di
assolvere a quei compiti che non vengono svolti in maniera
nativa. Né JScript né VBScript, ad esempio, permettono di per sé
di leggere o di scrivere file di testo sul server, così come non
forniscono nella loro definizione base la connettività con i
database. Questi compiti, quindi, vengono svolti attraverso il
ricorso ad oggetti esterni di tipo ActiveX. Questi oggetti sono
da considerarsi a se stanti e non facenti parte
dell'architettura di ASP. Molti di questi, comunque, sono
considerati standard e vengono installati su una macchina
insieme al server stesso. Saranno questi gli oggetti ActiveX ai
quali faremo riferimento nel corso della guida. Per ogni compito
di natura non generale sarà poi sempre possibile rintracciare un
componente ActiveX in grado di renderne possibile l'attuazione,
o sarà addirittura possibile realizzarne uno apposito in C++ o
in Visual Basic, volendo. Questa è l'ideologia su cui si basa
ASP. Il linguaggio di scripting altro non è che una manierà di
coordinare e rendere efficaci gli oggetti built-in e i
componenti ActiveX. Al momento di applicare le nozioni ricevute
ci si accerti sempre degli oggetti ActiveX disponibili sul
server che si sta utilizzando, non è detto che questi siano
quelli standard.
2.5 - Una pagina esemplificativa
La
pagina ASP qui di seguito rappresentata vuole essere di esempio
a quanto detto in questo capitolo della guida. Non si pretende
che il lettore conosca l'esatto utilizzo degli oggetti ai quali
si farà ricorso, che saranno invece ampliamente trattati di
seguito. L'intenzione è quella di realizzare un contatore da
includere poi mediante il comando #include di SSI all'interno di
una qualsiasi pagina ASP.
Si realizzi la seguente pagina ASP, che potrà essere denominata
index.asp:
<%@ LANGUAGE = JScript %>
<html>
<head><title>Benvenuto!</title></head>
<body>
<center>
<h1>Benvenuto nel mio sito!</h1>
Sei il visitatore numero
<b><!--#include file="contatore.inc"--></b>
</body>
</html>
Come
si può notare index.asp include in se
stessa il file contatore.inc. L'estenzione
.inc è quella raccomandata per tutti i file realizzati al solo
scopo di essere inclusi e non in grado di essere eseguiti in
maniera a se stante. Questa è solo una convenzione alla quale
può risultare pratico sottostare. Cambiando l'estensione del
file il risultato rimane comunque lo stesso. Si vada ora a
realizzare un semplice file di testo nominato
conteggio.txt e contenente il solo numero 0. Si salvi
infine il codice sotto riportato come
contatore.inc:
<%
var file_di_testo = Server.MapPath("conteggio.txt");
var fobj = new ActiveXObject("Scripting.FileSystemObject");
var in_stream = fobj.OpenTextFile(file_di_testo);
var stringa_cifra = in_stream.ReadLine();
in_stream.Close();
var intero_cifra = parseInt(stringa_cifra);
intero_cifra++;
var out_stream = fobj.CreateTextFile(file_di_testo);
out_stream.WriteLine(intero_cifra);
out_stream.Close();
Response.Write(intero_cifra);
%>
Si
raccolgano i tre file in una sola cartella sul server che abbia
abilitati i permessi in lettura/scrittura. Con IIS o PWS
solitamente tutte le cartelle godono di questo vantaggio, ma
alcuni spazi gratuiti restringono i permessi ad una sola
cartella, nominata il più delle volte dati.
Si leggano le FAQ relative al proprio spazio Web per saperne di
più in merito. Si carichi quindi con il browser la pagina
index.asp e la si aggiorni più volte
per vedere il contatore incrementarsi. Si tornerà
sull'architettura di questo codice non appena saranno trattati
in maniera esaustiva gli oggetti build-in e l'ActiveX denominato
Scripting.FileSystemObject.
|