Stefano Schacherl
Pagine ASP
parte 2
La gestione dei file
2
Esempio: un contatore di accessi
L'utilizzo delle pagine ASP è quasi sempre basato sulla
gestione dei File e dei DataBase.
Prima di vederne in dettaglio le caratteristiche proviamo a
realizzare un tipico esempio di applicazione,
un contatore di accessi.
Questo primo esempio si baserà su tre file:
• un file BENVENUTO.ASP (la pagina base)
• un file CONTATORE.INC (una pagina da includere che
contiene Jscript)
• un file CONTEGGIO.TXT (contiene il numero di
visitatori)
3
Esempio: un contatore di accessi
Il file benvenuto.asp è la pagina che verrà richiamata dal
client:
<%@ LANGUAGE = JScript %>
<html>
<head><title>Benvenuto!</title></head>
<body>
<center>
<h1>Benvenuto nel mio sito!</h1>
Sei il visitatore numero
<b><!--#include file="contatore.inc"--></b>
</body>
</html>
In questa pagina c'è solo html, ma prevede l'inclusione di
un file (contatore.inc) che contiene Jscript.
4
Esempio: un contatore di accessi
Il file contatore.inc è quello che contiene tutto lo script:
<%
var n_file = Server.MapPath("conteggio.txt");
var fobj = new
ActiveXObject("Scripting.FileSystemObject");
var file_in = fobj.OpenTextFile(n_file);
var stringa = file_in.ReadLine();
file_in.Close();
var intero = parseInt(stringa);
intero++;
var file_out = fobj.CreateTextFile(n_file);
file_out.WriteLine(intero);
file_out.Close();
Response.Write(intero);
%>
5
Esempio: un contatore di accessi
Commenti:
• il metodo MapPath dell'oggetto Server fornisce una
stringa con il nome (completo di path) del file
• ActiveXObject("Scripting.FileSystemObject") crea un
oggetto ActiveX per la gestione dei file
• con OpenTextFile si apre il file
• con ReadLine() si legge una riga del file
• con Close() viene chiuso il file file_in
• con CreateTextFile si crea un nuovo file (stesso nome)
• con WriteLine si scrive una riga nel file
Il file conteggio.txt deve contenere inizialmente il valore
0 e verrà automaticamente aggiornato.
6
ESERCITAZIONE
Realizzare e provare il contatore di accessi.
7
Gli oggetti ActiveX
L'istruzione var fobj = new
ActiveXObject("Scripting.FileSystemObject");
è un esempio di come JScript riesce ad utilizzare gli
oggetti ActiveX forniti dal server.
La sintassi è quindi la seguente:
var nomevar=new ActiveXObject("nomeserver.nometipo");
una volta creato l'oggetto nomevar in JScript, è possibile
utilizzarne proprietà e metodi:
nomevar.proprietà
nomevar.metodo(parametri)
L'oggetto ActiveX più utilizzato è proprio
Scripting.FileSystemObject
che consente di interagire con il File System del server.
8
Scripting.FileSystemObject
I metodi di Scripting.FileSystemObject sono numerosi,
tra questi:
DriveExists (Restituisce un booleano che indica se il
drive specificato esiste)
GetDrive (Restituisce un oggetto Drive relativo all'unità di
un percorso specificato)
GetDriveName (Restituisce una stringa contenente il
nome dell'unità di un percorso specificato)
9
Scripting.FileSystemObject
CopyFolder (Copia una cartella da una posizione ad
un'altra)
CreateFolder (Genera una nuova cartella)
DeleteFolder (Cancella una cartella)
MoveFolder (Sposta una cartella)
GetFolder (Restituisce un oggetto Folder relativo al
percorso specificato)
FolderExists (Restituisce un booleano che indica se la
cartella specificata esiste)
10
Scripting.FileSystemObject
CopyFile (Copia uno o più file da una posizione ad
un'altra)
DeleteFile (Cancella un file)
FileExists (Restituisce un booleano che indica se il file
specificato esiste)
MoveFile (Sposta uno o più file)
CreateTextFile (Crea un file di testo e restituisce un
oggetto TextStream utile per lavorare con il file creato)
GetFile (Restituisce un oggetto File relativo al percorso
specificato)
OpenTextFile (Apre il file specificato e restituisce un
oggetto TextStream che può essere utilizzato per leggere
il file, scrivere nel file o aggiungere testo alla fine del file)
11
Scripting.FileSystemObject
CreateTextFile e OpenTextFile sono i metodi più
importanti per la gestione dei file di testo, in quanto
restituiscono un oggetto di tipo TextStream, che consente
la gestione sequenziale di un file di testo; la sintassi di
OpenTextFile è la seguente:
nvar = nogg.OpenTextFile(nfile[,modoIO[,crea[,form]]]);
nogg = nome assegnato al new ActiveXObject
nfile = nome (completo di path) del file
modoIO = 1 (ForReading), 2 (ForWriting), 8
(ForAppending)
crea = True / False (se non esiste lo crea o no)
form = TristateTrue (Unicode) TristateFalse (ASCII)
TristateUseDefault (predefinita)
12
Scripting.FileSystemObject
La sintassi di CreateTextFile è la seguente:
nvar = nogg.CreateTextFile(nfile[,sovrascr[,unicode]]);
nogg = nome assegnato al new ActiveXObject
nfile = nome (completo di path) del file
sovrascr = True / False (se esiste lo sovrascrive o no)
unicode = True / False (formato Unicode o ASCII)
13
Scripting.FileSystemObject
OpenTextFile e CreateTextFile resituiscono un oggetto di
tipo TextStream che possiede i seguenti metodi:
Close (Chiude il file)
Read (Accetta un parametro intero n, legge e restituisce
quindi n caratteri dal file di testo)
ReadAll (Legge l'intero contenuto del file e lo restituisce
come stringa)
ReadLine (Legge un'intera riga del file fino al carattere di
"nuova riga" escluso e la restituisce come stringa)
Skip (Accetta un parametro intero n, durante la lettura di
un file salta n caratteri e posiziona lo stream sul carattere
immediatamente successivo all'ultimo ignorato)
SkipLine (Salta ed ignora un'intera riga del file)
...
14
Scripting.FileSystemObject
Write (Accetta un parametro intero str, scrive quindi il
contenuto di str all'interno del file)
WriteBlankLines (Accetta un parametro intero n, scrive
quindi nel file n righe vuote)
WriteLine (Accetta un parametro intero str, scrive quindi il
contenuto di str all'interno del file e lo fa seguire da un
carattere di "nuova riga")
15
Scripting.FileSystemObject
Proprietà:
AtEndOfLine (True se il puntatore dello stream è
posizionato immediatamente prima dell'indicatore di fine
di riga, restituisce false in caso contrario )
AtEndOfStream (True se il puntatore dello stream è
posizionato immediatamente prima dell'indicatore di fine
file, restituisce false in caso contrario)
Column (Restituisce il numero di colonna della posizione
di carattere corrente del file)
Line (Restituisce il numero di linea della posizione di
carattere corrente del file)
16
Il metodo Server.MapPath
L'oggetto built-in Server possiede alcuni metodi e
proprietà importanti; per ora ne vediamo solo uno, il
metodo MapPath, che serve per la gestione dei file.
Abbiamo visto che il riferimento ai file deve avere il
percorso assoluto; per evitare di dover scrivere l'intero
percorso (con gravi problemi di portabilità, tra l'altro) si
può usare questo metodo che restituisce una stringa con il
percorso assoluto di un file o cartella.
Quindi, ad esempio:
nfile = Server.MapPath("file.txt")
17
Esempi
Vediamo alcuni esempi di istruzioni per la gestione dei file;
per creare un file di testo con una prova di scrittura:
var fso = new
ActiveXObject("Scripting.FileSystemObject")
;
var text_stream =
fso.CreateTextFile(Server.MapPath("prova.tx
t"));
text_stream.WriteLine("Prova di scrittura
su file di testo");
text_stream.Close();
18
Esempi
Per aprire in lettura un file di testo esistente:
var fso = new
ActiveXObject("Scripting.FileSystemObject");
var text-file =
fso.OpenTextFile(Server.MapPath("prova.txt")
);
Per leggerne una singola riga:
riga = text-file.ReadLine();
Per controllare se il file è finito:
while(!text-file.AtEndOfStream) { … }
19
ESERCITAZIONE/1
Realizzare una pagina ASP che crei un file di testo.
Realizzare una pagina ASP che legga un file di testo e lo
visualizzi.
Realizzare una pagina ASP che crei un file di testo sulla
base dei dati immessi da un modulo. (Utilizzare il
programma di lettura per visualizzarne il contenuto)
Realizzare una pagina ASP che aggiunga ad un file di
testo (inizialmente vuoto) i dati immessi da un modulo.
(Utilizzare il programma di lettura per visualizzarne il
contenuto)
20
ESERCITAZIONE/2
Progetti proposti:
GUESTBOOK
FORUM
SONDAGGIO
GESTIONE PASSWORD UTENTI
RUBRICA TELEFONICA / E-MAIL
TEST a risposta multipla (con memorizzazione e
visualizzazione punteggi)
Scarica

Pagine Asp: introduzione