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 digitfor@gmail.com

 

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 eRUNAT=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

http://aspwire.com

ASP in ITALIANO

 

I lezione

II lezione

III lezione

IV lezione

V lezione

VI lezione