Oggetti Server e ObjectContext

lezione 4

Fausto Marinsalta

 

 

Introduzione

Questa lezione spazierà su due oggetti: Server (molto importante e frequentemente utilizzato) e ObjectContext (meno rilevante).

Oggetto ObjectContext

In questo paragrafo farò solo una breve descrizione di ObjectContext . Esso, infatti, non viene quasi mai utilizzato nelle comuni applicazioni ASP. Quest’oggetto dispone di due metodi ( SetAbort e SetComplete ) e due eventi ( OnTransactionAbort e OnTransactionCommit ).

ObjectContext viene utilizzato quando uno script ASP viene eseguito in una transazione gestita da Microsoft Transaction Server. Tali script contengono la direttiva <%@ Transaction %> (es: <%@ Transaction = Required %> ).

Oggetto Server

Molto probabilmente l’oggetto Server è il più versatile di tutti, infatti ci permette di utilizzare componenti installabili come ADO (che verrà discusso in altre lezioni) e di prelevare un percorso virtuale.

L’oggetto Server dispone di una proprietà ( ScriptTimeout ) e sette metodi ( MapPath , Transfer , HTMLEncode , URLEncode , Execute , CreateObject e GetLastError ).

Il primo membro che prenderemo in esame è il metodo MapPath . Esso permette di localizzare un percorso relativo o virtuale specificato. I termini “relativo” e “virtuale” stanno ad indicare che questo metodo restituisce una stringa nel formato http://www.marinsalta.net/asp ; un percorso sarebbe non virtuale/relativo (fisico) quando viene espresso nel formato “ f:\inetpub\wwwroot\utente1\area_sport\volley.asp ”.

MapPath prende come ingresso il nome di una directory o di un file e si utilizza nel seguente modo:

 

Server.MapPath(“immagini”); // Ritorna il percorso virtuale della directory “immagini”

Server.MapPath(“sondaggio.asp”); // Ritorna il percorso virtuale del file “sondaggio.asp”

 

Ad esempio, potremmo utilizzare il seguente script per individuare il percorso virtuale attuale:

Listato 1 – Metodo MapPath (path.asp)

<%@ Language=JavaScript %>

<% Response.Buffer=True %>

<html>

   <head>

     <title>Percorso virtuale di questo file</title>

   </head>

   <body>

<%

var Path = Server.MapPath(“path.asp”);

Response.Write(“<p align\”center\”>” + Path + </p>”);

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

Response.End;

%>

 

La riga 9 salva il percorso virtuale nella variabile Path .

La riga 10 genera del codice HTML con il percorso del file stesso.

Da un punto di vista pratico, MapPath può sembrare poco utile, ma si rivelerà di fondamentale importanza quando parleremo di file e database. Infatti, con questo metodo, possiamo individuare la posizione di file e directory dinamicamente.

Veniamo ora alla parte più interessante e corposa della lezione: il metodo CreateObject . Questo membro crea un’istanza di un componente installato nel server e ci apre le porte ad un’infinità di soluzioni. Con esso possiamo istanziare oggetti che ci permettono di inviare e-mail, creare documenti Word, dialogare con database, scrivere file nel server ed altre infinite (quasi) soluzioni.

CreateObject acquisisce come parametro d'ingresso il nome dell’oggetto da istanziare. Il formato da utilizzare è il seguente:

 

nome_componente.nome_oggetto

 

che, nell’utilizzo pratico, si scrive:

 

Server.CreateObject(“nome_componente.nome_oggetto”);

 

Riguardo ai componenti installabili è possibile trovarne in gran quantità in molti siti web (ce ne sono molti su www.aspobjects.com ), alcuni sono già installati nel server ( ADO , FileSystemObject , ecc..) mentre altri possono essere acquistati (scelta sconsigliata). Per poter utilizzare un componete è necessario leggersi la guida scritta dal creatore del componente per sapere quali oggetti (e relativi membri) si hanno a disposizione.

Generalmente, i componenti si presentano sotto forma di DLL (scritte in Visual Basic). In questo corso verranno illustrati: CDONTS (ci permette di inviare e-mail da pagine web scrivendo poche righe di codice), ADO (accede a database come Access, SQL Server e Oracle) e FileSystemObject (per leggere e scrivere su file).

Nel seguente listato vedrete in azione CreateObject con il componente ADO . Per ora, non importa che capiate tutto il codice scritto (ci sono cose non ancora spiegate), ma che vi rendiate conto del funzionamento di questo metodo.

Listato 2 – Metodo CreateObject (create.asp)

<%@ Language=JavaScript %>

<% Response.Buffer=True %>

<html>

   <head>

     <title>Prova del metodo CreateObject</title>

   </head>

   <body>

<%

var conn, recset, i=0;

var Path = Server.MapPath(“visite.mdb”);

 

conn = Server.CreateObject(“ADODB.Connection”);

recset = Server.CreateObject(“ADODB.Recordset”);

 

conn.Open(“DRIVER={Microsoft Access Driver (*.mdb)};DBQ=” + Path);

recset.Open(“SELECT * FROM Visite”, conn, 3, 3, 1);

 

if(recset.RecordCount != 0)

{

   recset.MoveFirst();

   while(!recset.EOF)

   {

    i++;

    Response.Write(“Record: “ + i + ”di “ + recset.RecordCount);

    recset.MoveNext();

   }

}

else

   Response.Write(“La tabella \”visite\” è vuota!!”);

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

Response.End();

%>

 

La riga 10 invia il percorso virtuale del database Access “visite.mdb” alla variabile “ Path ”.

Le righe 11 e 12 creano istanze degli oggetti Connection e Recordset del componente ADODB e le assegnano alle variabili “ conn ” e “ recset ”.

La riga 13 apre una connessione ad un database.

La riga 14 crea un nuovo cursore che permette di muoversi all’interno dei record acquisiti.

La riga 15 controlla se è presente almeno un record tra i valori acquisiti.

La riga 17 muove il cursore al primo record.

La riga 18 inizia un ciclo che termina solo dopo che il cursore ha raggiunto l’ultimo record.

La riga 22 sposta il cursore nel record successivo.

Conclusioni

Con questa lezione abbiamo concluso la parte riguardante gli oggetti ASP. D’ora in poi ci rivolgeremo verso argomenti più consistenti come i database, i file, i cookie e le inclusioni; insomma, terminata la prossima lezione (inclusioni e direttive) verranno descritti i principali componenti installabili.

In questa lezione avete imparato come:

 

-         utilizzare l’oggetto server;

-         individuare un percorso virtuale da un server;

-         creare istanze di oggetti da DLL.

Glossario

ADO : (ActiveXDataObject) tecnologia che ci consente di dialogare con database. Viene utilizzato anche in altri ambiti della programmazione.

Cursore : entità astratta in grado di muoversi all’interno di una raccolta ordinata di record.

Direttiva : istruzione (composta dal simbolo “ @ ” e da un nome) utilizzata per inviare informazioni al WebServer.

DLL : (dynamic link library) libreria installabile (nei sistemi operativi Windows) contenente codice compilato richiamabile da altre applicazioni.

Record : insieme di valori ordinati ognuno in colonne diverse, che insieme descrivono un’entità.