Oggetti Application e Session

lezione 3

 

 

 

 

Fausto Marinsalta

 

 



Introduzione

In questa lezione verranno introdotti altri due oggetti: Application e Session . La loro caratteristica principale è quella di avere una particolare visibilità. Insieme ai due che abbiamo già studiato ( Request e Response ) formano la base di questa interfaccia. Vediamoli in dettaglio.

Oggetto Application

L’oggetto Application può contenere una collezione di valori ed ha la particolarità di essere “visibile” a tutti gli utenti che sono acceduti in una determinata pagina. Application dispone di proprietà in grado di richiamare collezioni ( Contents e StaticObjects ), due metodi ( lock e unlock ) e due eventi ( onstart e onend ).

Per dichiarare, assegnare valori e richiamare una variabile Application (che andrà a formare la collezione) è sufficiente utilizzare la seguente sintassi:

 

Application(“nome_variabile”) = “prova”;

 

Questa ipotetica riga di codice crea una variabile chiamata “ nome_variabile ” e viene assegnata ad essa la stringa “ prova ”. Vediamo l’oggetto Application in azione:

Listato 1 – Oggetto Application (appl.asp)

<%@Language=JavaScript %>

<% Response.Buffer=true%>

<html>

<head>

<title>Prova oggetto</title>

</head>

<body>

<%

Application(“nick”) = Application(“nick”) + “ “ + Request.Form(“Nick”);

Response.Write(Application(“nick”);

Response.Write(“</body></html>”);

Response.End;

%>

 

La riga 9 somma il suo valore precedente ad un valore (nick) acquisito da un form.

La riga 10 genera, come codice di output, il valore della variabile Application(“nick”) .

Da questo breve listato potete intuire il funzionamento di una variabile Application : il primo utente che accede alla pagina appl.asp “attiva” l’applicazione e la variabile acquisisce un valore del tipo “ super ”; in seguito arriva un altro utente e la variabile diventa “ super utente2 ” e così via. Quando non ci sarà più nessun utente che sta visitando la pagina, la variabile Application(“nick”) viene cancellata.

Oggetto Session

L’oggetto Session viene utilizzato per delineare la sessione del visitatore. Session dispone di due proprietà che possono richiamare collezioni ( Contents e staticObjects ), quattro proprietà comuni ( codepage , LCID , sessionID e timeout ), un metodo ( Abandon ) e due eventi ( onstart e onend ).

L’utilizzo più comune che viene fatto di questo oggetto è sicuramente quello di immagazzinare valori dalla durata di una sessione. Vediamo come si potrebbe seguire le “impronte” lasciate da un utente nelle ultime tre pagine visitate utilizzando una sessione.

Listato 2 – Oggetto Session (home.asp)

<%@Language=JavaScript %>

<% Response.Buffer=true%>

<html>

<head>

<title>Prova Sessione</title>

</head>

<body>

<%

Session(“Pagina1”) = “”;

Session(“Pagina2”) = “”;

Session(“Pagina3”) = “”;

Session(“Ultima”) = 0;

Response.Write(“<a href=\”info.asp\”>INFORMAZIONI</a> <br/>”);

Response.Write(“<a href=\”help.asp\”>AIUTO</a>”);

Session(“Pagina1”) = “home”;

Session(“Ultima”) = 1; //Ultima variabile Pagina utilizzata

Response.Write(“</body></html>”);

Response.End;

%>

 

Le righe 9-10-11-12 dichiarano ed inizializzano quattro variabili Session con una stringa vuota o uno zero (da notare che il metodo utilizzato è lo stesso dell’oggetto Application) .

Le righe 17-18 assegnano dei valori a due variabili Session .

 

Listato 3 – Oggetto Session (info.asp)

<%@Language=JavaScript %>

<% Response.Buffer=true%>

<html>

   <head>

     <title>Prova oggetto</title>

   </head>

   <body>

<%

var i, m;

if(Session(“Ultima”) == 1) //Se l’ultima variabile “Pagina” modificata è la..

   for(i=1;i<=3;i++) //esegui per tre volte..

   {

     if(Session(“Pagina” + i) != ””) //Se la variabile non è nulla..

       Response.Write(“ >> <a href=\”” + Session(“Pagina” + i) + “.asp\”>” + Session(“Pagina” + i) + “</a>”);

   }

if(Session(“Ultima”) == 2)

   for(i=2;i<=4;i++)

   {

     m=i;

     if(i==4)

       m=1; //Quando i è uguale a 4.. prendi la variabile “Pagina1”

     if(Session(“Pagina” + m) != ””)

       Response.Write(“ >> <a href=\”” + Session(“Pagina” + m) + “.asp\”>” +

                                               Session(“Pagina” + m) + “</a>”);

   }

if(Session(“Ultima”) == 3)

   for(i=3;i<=5;i++)

   {

     m=i;

     if(i==4)

       m=1;

     if(i==5)

       m=2;

     if(Session(“Pagina” + m) != ””)

       Response.Write(“ >> <a href=\”” + Session(“Pagina” + m) + “.asp\”>” + Session(“Pagina” + m) + “</a>”);

   }

Response.Write(“<br/>”);

Response.Write(“<a href=\”home.asp\”>HOME</a> <br/>”);

Response.Write(“<a href=\”help.asp\”>AIUTO</a>”);

 

for(i=1;i<=3;i++)

   if(Session(“Ultima”) == i)

     if(i==3)

     {

       Session(“Pagina1”) = “info”;

       Session(“Ultima”) = 1;

     else

     {

       m = i+1;

       Session(“Pagina” + m) = “info”;

       Session(“Ultima”) = m;

     }

Response.Write(“</body></html>”);

Response.End;

%>

 

Le righe 10-16-25 controllano se la variabile Session(“Ultima”) è uguale a 1, 2 o 3.

Le righe 14-23-34 generano, come codice di output, un collegamento alle pagine precedentemente visitate (preceduto da “ >> ”).

Le righe 40/51 impostano la variabile Session(“Pagina” + x) con il nome della pagina attuale (x indica la parte finale della variabile che è stata utilizzata meno recentemente, ad esempio se la più recente è stata la 3, x acquisirà 1).

Le righe 45-50 impostano la variabile Session(“Ultima”) in modo che contenga il numero che identifica la variabile Session(“Pagina” + x) utilizzata in questo script.

Sicuramente è possibile realizzare lo stesso script con meno righe di codice, ma in questo modo avete potuto vedere la logica di funzionamento di una variabile Session in più situazioni.

Conclusione

Apparentemente, questi due oggetti potrebbero sembrare poco utili, ma se ci pensate bene, capirete che permettono di risolvere diverse problematiche in breve tempo: ad esempio con l’oggetto Application si potrebbe realizzare una chat in poco tempo, mentre Session (da come avete potuto costatare) può darci informazioni sul percorso delle pagine visitate dall’utente.

Riassumendo, in questa lezione avete imparato come:

 

·         manipolare un oggetto Application

·         gestire una sessione utente

Glossario

Da questa lezione in poi, verrà inserito un glossario di termini più o meno specifici del linguaggio, nella speranza che possa esservi utile nella comprensione di questo tutorial.

 

Buffer : una quantità di spazio della memoria messa a disposizione per immagazzinare informazioni temporanee.

Istanza : copia (utilizzabile) di un oggetto.

Collezione : insieme di valori dello stesso tipo richiamabili in un determinato modo.

Cookie : file di testo ASCII che viene scritto nel computer del visitatore del sito.

Parsing : procedimento di analisi, interpretazione e traduzione di un linguaggio.

Caratteri di escape : caratteri speciali che, per essere rappresentati sotto forma di stringa, necessitano di essere preceduti dal carattere backslash.

Form : un insieme di elementi che dà la possibilità all’utente di inserire informazioni.

IP : valore numerico (diviso da tre caratteri punto) che identifica l’utente connesso ad Internet.

Sessione : ambiente generato dal Web Server per ogni utente.

Personal Web Server : programma che permette di gestire un piccolo server locale; è disponibile per i sistemi operativi Win 95/98/ME.

Internet Information Service : programma per la gestione di un server (come il Personal Web Server, ma più avanzato e disponibile in sistemi operativi Win NT e 2000).