|
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 in Dettaglio
|
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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 < ed >
|
|
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.
|
|