Corso ASP - Parte prima
Caratteristiche di base
Le pagine ASP sono costituite da tre parti:
1. testo
2. marcatori HTML
3. comandi script
In una pagina ASP è possibile utilizzare qualunque linguaggio di scripting, anche in combinazione e scegliere di eseguire gli script sul server o sul client.
Quelle che seguono sono poche istruzioni base necessarie per illustrare la sintassi e il funzionamento della tecnologia ASP.
La prima distinzione a livello di codice sorgente riguarda i comandi nativi, ovvero quelli propri della tecnologia ASP e i comandi di scripting appartenente al linguaggio prescelto. Elemento fondamentale della tecnologia ASP sono i delimitatori, che individuano l'inizio e la fine di una sequenza di codice e che sono rappresentati rispettivamente dai simboli <% e %>.
Ad esempio il comando:
<% x="ciao" %>
assegna il valore "ciao" alla variabile x.
Inserendo uno script nel codice ASP è possibile riutilizzare eventuali funzioni realizzate in JavaScript o in VBScript, richiamandole tramite il comando nativo <% Call_ %>. L'esempio seguente mostra come costruire una pagina che visualizzi la data del giorno.
<% 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 nella finestra del browser
Response.Write(x.getDate())
}
</SCRIPT>
Un oggetto è una struttura di dati astratta di cui non interessa conoscere le modalità di realizzazione, bensì le operazioni possibili su di essa.
La tecnologa ASP prevede oggetti predefiniti sui quali è possibile operare con i metodi, che sono funzioni intrinseche di questi oggetto. Nell'esempio precedente, la funzione JavaScript PrintDate è contenuta tra i marcatori <SCRIPT> e </SCRIPT> ai quali sono stati aggiunti gli attributi LANGUAGE=JScript e RUNAT=server. L'attributo LANGUAGE serve a indicare il linguaggio di scripting utilizzato, mentre l'attributi RUNAT serve a indicare se lo script debba essere eseguito sul client o sul server; omettendo l'attributo RUNAT, lo script viene eseguito automaticamente sul server. Il vantaggio principale degli script lato server è quello di non trasferire il codice al client in quanto viene elaborato dal server il quale invia al client il risultato dell'elaborazione in una pagina costruita "al volo" nella quale sono visibili solo il codice HTML e gli scrip per i quali non sia stato specificato l'attributo RUNAT=server.
Non è possibile utilizzare i delimitatori <% %> per definire una funzione, poiché che non è possibile assegnare nomi a blocchi di codice ASP, ma è possibile importare funzioni, script e intere pagine HTML o ASP utilizzando le istruzioni SSI <!-- #include file/virtual -->.
L'oggetto Response
L'oggetto Response consente di gestire l'interazione fra server e client. Possiede una serie di metodi che consentono di effettuare altrettante operazioni.
Il metodo Response.Write richiede che le stringhe di testo e le funzioni che restituiscono stringhe di testo siano racchiuse tra virgolette.
<HTML>
<BODY>
<TABLE>
I marcatori <td> e <tr> sono definiti in una subroutine Echo in VBScript richiamata dall'istruzione <% Call Echo %> che restituirà i valori che completeranno la tabella.
<% Call Echo %>
</TABLE>
<% Call PrintDate %>
Print Data restituisce soltanto il valore della data corrente poiché richiama la funzione definita nello script JavaScript.
</BODY>
</HTML>
<SCRIPT LANGUAGE=vbscript RUNAT=Server>
Sub Echo
Response.Write "<TR><TD>Name</TD><TD>Value</TD></TR>"
Set Params = Request.QueryString
L'istruzione Set imposta la variabile Params
For Each p in Params
Response.Write "<TR><TD>" & p & "</TD><TD>" & Params(p) & "</TD></TR>"
Next
End Sub
</SCRIPT>
L'istruzione For apre un ciclo iterativo per ogni stringa inserita nell'URI dopo il ? (p. es. http://mioserver/esempio.asp?pippo=3 e Params(p) assume il valore 3).
<SCRIPT LANGUAGE=JScript RUNAT=Server>
function PrintDate()
{
var x
x = new Date()
Response.Write(x.toString())
}
</SCRIPT>
L'oggetto Request è un oggetto intrinseco che 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 dell'oggetto Request è:
Request[.Collection] ("variabile")
Tra le collection dell'oggetto Request, nell'esempio precedente è stata utilizzata QueryString, che legge le stringhe di testo provenienti da una form o inserite manualmente, secondo la regola pagina?parametro=stringa.
L'esempio che segue è relativo a una pagina ASP che stampa la stringa "Ciao!" nella finestrad del browser componendo al momento una pagina HTML composta da 5 righe ciascuna delle quali riproduce la stessa stringa secondo una dimensione variabile del corpo del testo da 3 a 7 punti per carattere attraverso l'istruzione VBScript For To che controlla un ciclo di assegnazione di valori alla variabile i che, a sua volta, definisce la grandezza dell'attributo SIZE del marcatore FONT; il ciclo interessa tutto ciò che è compreso tra le istruzioni For To e Next.
<HTML>
<BODY>
<% For i = 3 To 7 %>
<FONT SIZE=<% = i %>>
Ciao!<BR>
<% Next %>
</BODY>
Combinando l'oggetto Request e il metodo ServerVariables è possibile richiedere al server una variabile di sistema, per esempio HTTP_USER_AGENT che individua il tipo di browser.
<html>
<body>
<% a=Request.+
ServerVariables("HTTP_USER_AGENT")%>
<% Response.write(a)%>
</body>
</html>
L'istruzione
<% If InStr(1, Request.ServerVariables("HTTP_USER_AGENT"), "MSIE 4") <> 0_
or InStr(1, Request.ServerVariables("HTTP_USER_AGENT"), "MSIE 3") <> 0_
or InStr(1, Request.ServerVariables("HTTP_USER_AGENT"), "Mozilla/4") <> 0 Then %>
permette di discriminare tra Microsoft Internet Explorer 4, Microsoft Internet Explorer 3, e Netscape Communicator.
|