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:
<%@ 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.
<%@ 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à.