Active Server Pages

presentato dall' ing. R. Turco    E-MAIL: Rosario.Turco@tlsoft.it  


                                                                                                                

 Lezione n° 2 
     

    L'oggetto APPLICATION e Global.asa

    L'oggetto Application lavora spesso in coppia con il file gobal.asa, il 
    quale risiede nella stessa directory dove è presente l'applicazione. 

    Tale file viene interpretato sia all'avvio che alla chiusura di una  
    applicazione o di una sessione. 

    In global.asa sono, quindi, contenuti i comandi, di inizializzazione o di 
    chiusura, di una applicazione o di una sessione. 

    Ad esempio supponiamo che nel file global.asa sia scritto qualcosa  
    come quello che segue: 

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> 

    Sub Application_OnStart 

        Application("CorbelleriaSolita")="Non funziona niente!!!" 

    End Sub 

    </SCRIPT> 
     
      
    A questo punto è come se avessimo definito una costante di classe,  
    che vive fino alla fine del life-time dell'applicazione. 

    Supponiamo ora che esiste un file .ASP che contenga, invece: 

    <HTML> 
    <HEAD> 
    ........................ 
    </HEAD> 
    <BODY> 
    ........................ 

    <% =Application("CorbelleriaSolita") %> 
    </BODY> 
    </HTML> 

    Ora qualunque Client che richiamerà tale .ASP vedrà l'HTML  
    standard seguente: 

    <HTML> 
    <HEAD> 
    ........................ 
    </HEAD> 
    <BODY> 
    ........................ 

    Non funziona niente!!! 

    </BODY> 
    </HTML> 

    Con un oggetto Application, associato ad uno session, si può facilmente  
    creare un counter per Pagine Web.  
     

    L'oggetto Session

    L'oggetto Session lavora in modo abbastanza simile ad Application ma con  
    qualche leggera differenza: 
     
    • le definizioni di costanti sono locali, ovvero valevoli solo per la sessione
    • l'oggetto session viene eseguito ogni volta che un utente si connette ad 
              un'applicazione 

    Supponiamo che il file global.asa sia fatto nel seguente modo: 

    <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> 

    Sub Application_OnStart 

        Application("CorbelleriaSolita")="Non funziona niente!!!" 
        Application("Counter")=0 

    End Sub 

    Sub Session_OnStart 

        Application("Counter")=Application("Counter") + 1 

    End Sub 

    </SCRIPT> 
     

          Supponiamo di avere anche il file Corbellerie.ASP  

          <HTML> 
          <HEAD> 
          ........................ 
          </HEAD> 
          <BODY> 
           ........................ 

          <% =Application("CorbelleriaSolita") %> 
          Numero visitatori di Aladdin's Lamp &nbsp<% =Application("Counter") %> 
          </BODY> 
          </HTML> 
 

           Supponiamo di avere tre Client A,B,C che richiedano tutti la pagina  
           Corbellerie.ASP, ma che inizi ad attivarla il client A. 

           A setta il counter prima a zero con Application_OnStart, poi lo incrementa  
           di uno perchè esegue anche Session_OnStart. 

           Quando anche B e C vanno ad eseguire il file .ASP non passano più per 
           Application_OnStart ma solo per Session_OnStart, per cui ognuno di loro 
           incrementa il valore di counter. L'esempio funziona perchè Session va ad  
           agire su una variabile di application, per cui globale. 

        APPLICATION e la concorrenza 

           Tuttavia, a causa della concorrenza sulla variabile, occorre  
           modificare ancora qualcosa nella parte SESSION: 

            <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> 

            Sub Application_OnStart 

              Application("CorbelleriaSolita")="Non funziona niente!!!" 
              Application("Counter")=0 

            End Sub 

            Sub Session_OnStart 

              Application.Lock 
              Application("Counter")=Application("Counter") + 1 
              Application.Unlock 

            End Sub 

          </SCRIPT>  

          Un altro esempio per Session è il seguente: 

          <HTML> 
          <HEAD> 
          ........................ 
          </HEAD> 
          <BODY> 
           ........................ 

          <% if Session("Nome") <> "" then %> 
             Salve <% =Session("Nome")%> <br> 
           <% else %> 
              <% Session("Nome")=request.form("Name")%> 
              <form action="Corbellerie.asp" method="POST"> 
               <input type="Text" name="Name"> 
               <input type="Submit" name="Invia"> 
               </form> 
             <end if%> 

         </BODY> 
         </HTML> 

         Se Nome è vuoto viene visualizzata la form su cui l'utente deve digitare 
         il nome che viene memorizzato in una variabile di sessione, cioè locale. 
         Se Nome è valorizzato viene stampato Salve ed il nome dell'utente. 
  
 

Fine Lezione n° 2