Il Modello ad Oggetti di ASP


Home Page | Comments | Articles | Faq | Documents | Search | Archive | Tales from the Machine Room | Contribute
A cura di Davide Bianchi Elenco degli oggetti disponibili in ASP, loro proprieta' e metodi.

Gli Oggetti di ASP

Cosa e' un "oggetto"? lasciando perdere tutta la tiritera della programmazione Object Oriented, un "oggetto" e' un qualche "arnese" che ci viene fornito da una libreria (DLL) esterna o interna all'ASP stesso. Quindi le "capacita'" dell'oggetto in questione sono specifiche dell'oggetto e non dipendono tanto dall'ASP.

A che servono gli oggetti? Ad "estendere" le capacita' del linguaggio ed a fornire l'accesso a funzionalita' molto utili che sono impossibili con i costrutti standard del linguaggio.

Come si usa un oggetto ? Ogni oggetto ha delle Caratteristiche (Proprieta') e delle Funzionalita' (Metodi), che sono tipici dell'oggetto stesso.

Per esempio supponiamo di avere un oggetto che rappresenta una cartella (Folder) sul disco. Questo oggetto potrebbe avere delle proprieta' che sono: il nome della cartella, la dimensione occupata (in KByte), il numero di file contenuti, l'elenco dei file contenuti e cosi' via. I Metodi associati potrebbero essere "Cancella" per distruggere la cartella e tutto il suo contenuto, "Sposta" per muovere la cartella con il suo contenuto e cosi' via.

Per richiamare un Metodo o interrogare una Proprieta' di un oggetto si utilizza:

    
oggetto.metodo/proprieta
Per esempio, supponendo di avere un oggetto Pippo con proprieta' Pluto:
    
Pippo.Pluto = "1"
Assegna alla proprieta' Pluto il valore "1". Allo stesso modo:
    
variabile = Pippo.Pluto
assegna il valore della proprieta' Pluto alla variabile denominata "variabile".

Gli Oggetti Interni

Sono gli oggetti che sono forniti con ASP stesso, non e' necessario creare questi oggetti in maniera esplicita nel codice perche' l'interprete ASP li crea automaticamente per noi e ce li fornisce direttamente per essere sfruttati.

Gli oggetti che funzionano direttamente in ASP sono chiamati il Modello ad Oggetti di ASP.

Il Modello ad Oggetti di ASP

Di seguito sono elencati gli oggetti che costituiscono il modello di ASP e le loro caratteristiche principali.
Oggetto Descrizione
Application Rappresenta l'applicazione, questo oggetto viene creato automaticamente dal server quando il primo browser si connette al sito ASP e viene distrutto 20 minuti circa dopo che l'ultimo browser si e' disconnesso dal sito. Puo' contenere dei valori che sono comuni a tutto il sito ed a tutti gli utenti.
Session Rappresenta la sessione, questo oggetto viene creato automaticamente dal server quando il browser dell'utente si connette al sito ASP e viene distrutto 20 minuti circa dopo che il browser si e' disconnesso dal sito o dopo 20 minuti di inattivita'. Ogni browser ha una sua sessione indipendente. La Sessione puo' essere usata per memorizzare informazioni che sono personali del browser stesso.
Request Rappresenta le informazioni inviate al server durante la richiesta della pagina ASP. Se la richiesta e' stata fatta tramite una form, la Request contiene i valori dei vari campi della form oltre a tutta una serie di informazioni aggiuntive.
Response Rappresenta la pagina HTML che e' in fase di costruzione dall'interprete ASP prima di essere inviata al client come risposta. Permette di scrivere sulla pagina e di eseguire altre operazioni che hanno come "bersaglio" il client.
Server Rappresenta il Server Web e consente di svolgere diverse attivita' quali la creazione di oggetti esterni as ASP stesso, reperire path (directory), effettuare la codifica di URL. e' un oggetto "di comodo".
Gli Oggetti in Dettaglio

Application

Proprieta' Descrizione
Contents Si tratta di una Collezione, cioe' di un elenco di valori che sono stati aggiunti alla Application dal codice. E' possibile reperire i valori inseriti usando

var=Application.Contents(key)
Dove var e' una variabile che assumera' il valore reperito, e key e' il nome del valore assegnato. In alternativa e' possibile anche usare molto piu' semplicemente

var=Application(key)
Per assegnare un valore si puo' usare:

Application.Contents(key) = valore
oppure

Application(key) = valore
Dove valore e' il valore che si vuole assegnare e key e' il nome che si vuole dare al valore per poterlo recuperare poi. Se il valore e' gia' esistente (gia' assegnato), verra' sostituito, in caso contrario verra creato.
StaticObject Si tratta di una Collezione che contiene tutti gli oggetti che sono stati creati usando <OBJECT>. Il suo utilizzo e' analogo a quello della Collection Contents.
Metodi Descrizione
Lock Blocca tutti i client dal modificare i contenuti della Application, permettendo ad un solo client (quello attuale) di apportare modifiche.
Se non viene richiamato esplicitamente Unlock, il server sblocchera' la Application quando la pagina ASP termina o scade il tempo massimo di elaborazione
Unlock Sblocca l'Application consentendo a tutti i client di apportare modifiche.
Eventi Descrizione
OnStart Richiamata automaticamente quando il primo client si collega al server Web. Viene usata per inizializzare variabili o altre attivita' da svolgere una sola volta per tutto il sito. Deve essere messa nel Global.Asa
OnEnd Richiamata automaticamente quando l'utlimo client si scollega dal server Web o tutti i client cessano di essere attivi.

Viene usata per ripulire la memoria ed altre attivita' da svolgere alla conclusione di tutte le attivita'.

Deve essere messa nel Global.Asa


Session

Proprieta' Descrizione
Contents Si tratta di una Collezione, cioe' di un elenco di valori che sono stati aggiunti alla Session dal codice. e' possibile reperire i valori inseriti usando

var=Session.Contents(key)
Dove var e' una variabile che assumera' il valore reperito, e key e' il nome del valore assegnato. In alternativa e' possibile anche usare molto piu' semplicemente

var=Session(key)
Per assegnare un valore si puo' usare:

Session.Contents(key) = valore
oppure

Session(key) = valore
Dove valore e' il valore che si vuole assegnare e key e' il nome che si vuole dare al valore per poterlo recuperare poi. Se il valore e' gia' esistente (gia' assegnato), verra' sostituito, in caso contrario verra creato.
StaticObject Si tratta di una Collezione che contiene tutti gli oggetti che sono stati creati usando <OBJECT>. Il suo utilizzo e' analogo a quello della collection Contents.
SessionID E' un identificativo univoco che viene assegnato dal Server Web alla singola sessione per poterla identificare da tutte le altre attive al momento. La Session ID non e' univoca in assoluto, questo significa che la stessa SessionID puo' essere riutilizzata dal Server Web, ma due Session attive contemporaneamente non possono avere la stessa Session ID.
TimeOut Consente di leggere o impostare il tempo di persistenza della Sessione. Il tempo di persistenza e' il lasso di tempo durante il quale i valori delle variabili di sessione (Contents) sono mantenuti anche se il client non fa assolutamente nulla. Per default tale tempo e' 20 minuti. Volendo e' possibile ridurre o aumentare tale tempo di permanenza. Il TimeOut deve essere indicato in minuti.
CodePage Permette di specificare o di reperire il Code Page che sara' usato per scrivere le informazioni sul Client. Il Code Page rappresenta praticamente il set di caratteri da utilizzare. Il CodePage deve essere specificato come numero intero, lo stesso CP deve essere installato sul server perche' questo possa funzionare. Per esempio 1252 e' usato per l'inglese americano, mentre 932 e' il set di caratteri Kanji (giapponese).
LCID Permette di specificare o di reperire il Local Identifier, cioe' il codice che identifica le impostazioni di "paese" che sono usate per formattare numeri, date etc. Il codice da usare e' il codice standard di identificazione del paese da utilizzare.
Metodi Descrizione
Abandon Distrugge la sessione corrente ed elimina tutte le variabili di sessione eventualmente create, ripristina tutti i settaggi di sessione al default.
Eventi Descrizione
OnStart Richiamata automaticamente quando il client si collega al server Web. Viene usata per inizializzare variabili o altre attivita' da svolgere una sola volta per tutto il tempo di collegamento del client.

Deve essere messa nel Global.Asa

OnEnd Richiamata automaticamente quando il client si scollega dal server Web o quando la sessione scade per TimeOut o viene richiamata una Abandon per concludere la sessione da programma.

Deve essere messa nel Global.Asa


Request

Proprieta' Descrizione
ClientCertificate Si tratta di una Collezione, cioe' di un elenco, che riporta tutti i campi di "certificazione" specificati dal client durante una connessione di tipo "sicuro". Se il Web Server richiede informazioni di certificazione, il browser usera' i campi di certificazione per fornire tali informazioni al server.

Per reperire le informazioni si utilizza:


info = Request.ClientCertificate( Key[SubField] )
Dove Key puo' valore:
  • Certificate
    Ritorna una stringa contente la sequenza binaria dell'intero certificato in formato ASN.1.
  • Flags
    Ritorna un insieme di flag che forniscono informazioni addizionali riguardo il client. I Flag disponibili sono:
    • ceCertPresent Un certificato per il client e' presente
    • ceUnrecognizedIssuer L'ultima certificazione e' sconosciuta
  • Issuer
    Ritorna una stringa che contiene una lista di tutti i valori dei sottocampi che contengono informazioni relative a chi ha fornito i certificati. Se questo valore e' specificato senza SubField, la ClientCertificate, ritornera' una lista separata da virgole di tutti i sottocampi disponibili. Per esempio C=US, O=Verisign...
  • SerialNumber
    Una stringa che contiene il numero di serie della certificazione come rappresentazione ASCII dei codici esadecimali separati dal segno -. Per esempio: 04-67-F3-02.
  • Subject
    Una stringa che contiene un elenco dei sottocampi che contengono informazioni relative al soggetto del certificato, se questo flag e' specificato senza SubField, la ClientCertificate ritornera' un elenco separato da virgole di tutti i sottocampi disponibili. Per esempio C=US, O=Verisign...
  • ValidFrom
    Una data che specifica da quando il certificato e' valido. La data segue il formato di VBScript e varia a seconda delle impostazioni internazionali.
  • ValidUntil
    Una data che specifica fino a quando il certificato e' valido. La data segue il formato di VBScript e varia a seconda delle impostazioni internazionali.
SubField e' un campo aggiuntivo che consente di specificare quale informazione reperire quando le informazioni sono molteplici. Questo parametri e' aggiunto al flag come suffisso. Per esempio Issue0 specifica il Flag Issue con SubField 0.
Cookies Permette di reperire il valore di un cookies installato sulla macchina dell'utente. Si tratta di una Collection in realta', tutti i Cookies sono disponibili dentro la collection.

Request.Cookies(cookie)[(key)]
Dove cookie e' il nome del Cookie da reperire e key e' una eventuale "chiave" aggiuntiva al cookie stesso.
Form Permette di reperire le informazioni presenti in una eventuale Form della pagina chiamante. Se la pagina chiamante non ha form, questa collection risulta vuota.

Request.Form("nomecampo")
Ritornera' il valore del campo di input "nomecampo".
QueryString Molto simile a Form, ma funziona solo se la form di spedizione utilizza il metodo Post invece che il metodo Get oppure se le variabili di richiesta sono state inviate direttamente nell'url della pagina.
ServerVariables Questa collection riporta una serie di utilissime informazioni relative al client ed al server, le informazioni riportate sono tantissime a seconda della "variabile" che si richiede. Si va' dal nome dell'utente che ha fatto Login (solo con NT in ambiente Intranet), all'indirizzo IP del client. Per ispezionare i valori disponibili utilizzate questo semplice script:

<%
  For each value in Request.ServerVariables
    Response.Write value 
    Response.Write "="
    Response.Write Request.ServerVariables(value)
    Response.Write "<br>"
  Next
%>
TotalBytes Consente di sapere il numero totale di bytes inviati dal client nella richiesta. Questa proprieta' e' Read-Only.
Metodi Descrizione
BinaryRead Questo metodo legge il contenuto della Richiesta (metodo POST) come elenco di byte grezzi, per poterlo poi memorizzare in una variabile. Una volta eseguita la lettura, ogni tentativo di accedere alle informazioni della richiesta, per esempio mediante Form() o QueryString(), ritornera' un errore. Allo stesso modo dopo aver acceduto ai dati tramite Form(), un tentativo di uso di BinaryRead ritornera' un errore.


Response

Proprieta' Descrizione
Buffer Questo flag indica se il documento in fase di scrittura verra' bufferizzato prima di essere inviato oppure no. Il parametro puo' assumere solo i valori TRUE o FALSE. Nel primo caso tutti i dati verranno inseriti in memoria prima di essere inviati al client in un unico blocco, quando la pagina sara' completamente processata o quando viene richiamato un Flush, nel secondo caso le informazioni verranno inviate non appena disponibili in quantita' sufficiente.
CacheControl Questa proprieta' serve a sovrascrivere il valore di default Private relativo ai contenuti della pagina. Impostandola a Public, si abilitano i Proxy Server al caching delle pagine ASP.
CharSet Permette di specificare quale set di caratteri sara' usato per scrivere sul documento HTML in produzione. L'effetto e' quello di inserire un campo corrispondente nell'header del documento. I set di caratteri devono essere riconsciuti e gestiti dal browser affinche' questo parametro possa funzionare correttamente.
ContentType Consente di specificare il Content Type della pagina HTML inviata al client, se non specificato diversamente il CT sara' Text/HTML.
Cookies Questa e' una Collection di valori che consente di inviare uno o piu' cookies al browser dell'utente per memorizzare valori all'interno del browser stesso.
Il codice seguente invia due cookie al client:

<% 
Response.Cookies("mycookie")("type1") = "sugar"
Response.Cookies("mycookie")("type2") = "ginger snap"
%>
Expires Questa proprieta' consente di impostare il tempo per cui la pagina viene mantenuta nella cache del browser, quindi non viene richiesta al server in caso l'utente cerchi di rivederla senza usare il tasto "Reload".
Il tempo va' indicato in minuti. Se si indica 0, la pagina verra' sempre ricaricata dal server e non inserita nella cache.
ExpiresAbsolute Questa proprieta' consente di specificare la data e l'ora alla quale la pagina inviata verra' considerata scaduta dal browser e quindi verra' richiesta nuovamente al server. Se il client richiede la stessa pagina PRIMA della data/ora specificata, la pagina verra' reperita dalla Cache del client.
Ovviamente tutto questo non ha valore se l'utente rimuove le pagine dalla cache del sui browser.
La data/ora deve essere specificata in formato RFC-1123, l'ora viene convertita in formato GMT.
Per esempio, la pagina seguente imposta la scadenza 15 secondi dopo l'1.30 PM del 32 Maggio 2000.

<% Response.ExpiresAbsolute=#May 31,1996 13:30:15# %>
IsClientConnected Questa proprieta' e' di sola lettura, ritorna TRUE se il client e' ancora connesso al sito, ritorna FALSE in caso contrario. Questo fornisce un ottimo sistema per verificare la presenza dell'utente nel sito ed eventualmente eseguire operazioni di pulizia sui dati se non sono piu' richiesti.

<% 
  ' verifico se il client e' ancora connesso
  If Not Response.IsClientConnected Then 
  
    ' memorizzo la SessionID per successive operazioni
    Shutdownid = Session.SessionID
  
    ' eseguo la chiusura della sessione
    Shutdown(Shutdownid) 
    
  End If
%>
Pics picslabel Questa proprieta' permette di impostare l'etichetta delle Picture che e' inviata nell'header della pagina HTML. Siccome l'etichetta contiene dei caratteri ", occorrera' sostituirli con Chr(34). Se la proprieta' e' richiamata piu' di una volta, solo l'ultimo valore verra' utilizzato.
Status stato Questo parametro permette di modificare la "linea di stato" visualizzata dal browser. Lo stato e' una stringa composta da un codice numerico di 3 cifre ed una descrizione associata.
Es.:

Response.Status = "401 Unauthorized"
Metodi Descrizione
AddHeader nome,valore Aggiunge alla pagina HTML in produzione un campo di intestazione (Header) con il nome ed il valore specificato. Il valore ed il nome non possono contenere caratteri illegali (<, >, " etc.).
AppendToLog stringa Consente di inserire una linea di informazioni al file di log del Web Server. Questo e' utile quando vogliamo mantenere traccia di determinate informazioni relative agli eventi del nostro sito ASP. Siccome le linee di Log di IIS sono delimitate da virgole, la stringa da scrivere non puo' contenere virgole. La massima lunghezza della stringa e' di 80 caratteri
BinaryWrite dati Scrive sul client dati binary "grezzi".
Clear Ripulisce il buffer di scrittura annullando eventuali scritture ancora pendenti.
End Conclude forzatamente l'invio dei dati al client.
Flush Forza lo svuotamento del buffer di scrittura ed effettua la scrittura vera e propria sul client.
Redirect Consente di far passare il browser dell'utente ad un'altra pagina specificando l'URL di destinazione. Perche' questo metodo funzioni e' necessario che NESSUNA informazione sia ancora stata inviata al client, quindi e' necessario richiamarlo prima di qualunque altro metodo che scrive sul client o prima di tag HTML.
Write E' il metodo piu' usato. Si limita a scrivere nella pagina di risposta quello che viene passato come argomento del metodo.


Server

Proprieta' Descrizione
ScriptTimeout Consente di specificare il tempo massimo (in secondi) in cui lo script deve essere eseguito. Una volta trascorso tale tempo il web server fornira' un messaggio di errore di "timeout".
Il valore di default di timeout e' 90 secondi.
Questa proprieta' puo' essere utile per aumentare il tempo di timeout per script molto lenti di esecuzione.
Metodi Descrizione
CreateObject TipoOggetto La CreateObject consente di creare un oggetto richiamando una DLL esterna, la DLL deve essere registrata nel sistema e fornire un accesso mediante tecnologia OLE/COM. L'oggetto creato risulta nello spazio di memoria dell'interprete ASP e quindi puo' essere controllato come se fosse un oggetto "interno" ad ASP stesso.

Per default, un oggetto creato con CreateObject, ha vita limitata alla pagina stessa. Perche' l'oggetto rimanga in vita e' necessario memorizzarlo all'interno di una variabile di Sessione o di Applicazione.

HTMLEncode Questo metodo consente di "trasformare" una stringa di testo in una stringa equivalente in cui i caratteri "strani" sono stati convertiti in sequenze valide per HTML. In questo modo eventuali < ed > vengono convertiti in &lt; ed &gt;

MapPath Questo metodo permette di "trasformare" un percorso relativo alla "/" del Server Web nell'equivalente directory assoluta sul disco del server. Cio' e' necessario quando dobbiamo accedere a file memorizzati sul disco ed occorre inviare il path completo del file stesso.
La MapPath non supporta il path "relativo" (cioe' che contiene . o ..), inoltre non verifica se il path ritornato e' valido o esiste sul server.

Il codice seguente visualizza la directory fisica del server web che ospita la pagina ASP richiesta:


<%= server.mappath(Request.ServerVariables("PATH_INFO"))%>
URLEncode Simile alla HTMLEncode, ma agisce su URL, rimuovendo e sostituendo eventuali caratteri invalidi nell'URL. In particolare, se l'URL contiene degli spazi, questi vengono convertiti nella sequenza &20.

Comments

Max length of comments: 1000 chars.

nessun commento.

Add a comment (max 1000 chars)

Comment from:
Comment:


Davide Bianchi, works as Unix/Linux administrator for a "network security" company of Haarlem.
Contacts: mail: davide AT onlyforfun.net , ICQ: 268751033, Jabber: davideyeahsure AT gmail.com Skype: davideyahsure

Contribuire Volete contribuire? Leggete come!

Copyright This site is made by me with blood, sweat and gunpowder, if you want to republish or redistribute any part of it, please drop me (or the author of the article if is not me) a mail.

This site was composed with VIM, now is composed with VIM and the (in)famous CMS FdT.

This site isn't optimized for vision with any specific browser, nor it requires special fonts or resolution.
You're free to see it as you wish.
Web Interoperability Pleadge is this a valid html document?

Last update: 01 Novembre 2000