Dreamweaver - Flash - Ultradev - Swish - Photoshop - Html - Php - Php Nuke - Applet java - Gif
  1. Introduzione
  2. Personal Web Server
  3. Software di sviluppo
  4. Implementare il codice
  5. Server Side Include
  6. Oggetti built-in
  7. Oggetto Response
  8. Oggetto Request
  9. Oggetto Server
  10. Oggetto Session - new

1. Introduzione 

Asp (Acrive Server Pages) è una tecnologia di casa Microsoft utilizzata dagli sviluppatori Web per la creazione di siti e applicazioni server-side, si basa sulla creazione di file di testo con estensione .asp da salvare come Tutti i File [*.*].

Ho parlato di tecnologia e non di linguaggio dato che, al contrario di suoi simili come Php o Jsp, l'Asp non ha un linguaggio di scripting proprietario, ma si server principalmente del VBScript, non a caso di casa Microsoft, del JScript, ovvero la versione Microsoft del famoso Javascript, e addirittura del PerlScript, ovvero tutti linguaggi altrimenti utili allo sviluppo di controlli client-side.

Quindi, mentre il Php ha una sua sintassi ed una sua semantica, Asp si appoggia a questi linguaggi tramite i quali non diventa possibile sviluppare applicazioni di una certa complessità ed interazione tra un client ed un server, quindi spesso si ricorre all'ausilio di controlli di tipo ActiveX residenti sul server Web e mediante i quali è ora possibile operare a pieno.

In questa guida si è scelto di lavorare con JScript, data la maggiore diffusione del Javascript come linguaggio client-side tra gli sviluppatori, tornerà di certo più agevole che dover adattare le proprie conoscenze sintattiche ad un altro linguaggio.

Un esempio chiarificatore, nonchè il più banale da comprendere e creare, è il famoso caso del contatore di accessi: creando in locale un'applicazione del genere, con l'ausilio quindi di un linguaggio di scripting client-side come Javascript, ogni utente vedrebbe sulla pagina il numero di volte che lui, come singolo utente, ha visitato quella pagina, non vedendo il numero di reali accessi che la stessa ha avuto, non considerando anche il fatto che il numero che deve essere visualizzato deve essere conservato in una struttura diversa da un file Web, bensì un database o un file di testo, tecnologie con cui è possibile interagire solo mediante linguaggi server-side.

Vediamo come potrebbe essere rappresentato schematicamente l'esempio del contatore, se venisse realizzato con una tecnologia client side o server-side:


Elaborazione client-side

Elaborazione server-side

Non è possibile testare una pagina Asp in locale come se fosse un normale file Html, dato che il processo di interpretazione di un simile file deve essere eseguito da un server e non dal browser.

A risoluzione di questo problema ci vengono incontro piccoli software installabili sul proprio PC che fungono da server Web personali sui quali installare, o che dir si voglia salvare i file Asp e richiamarli da un browser per visualizzarli tramite http, come se la conversazione avvenisse davvero in remoto, cioè tra un client ed un server.

Tentiamo ora di capire come avviene questa comunicazione, perchè utilizziamo una tecnologia (o anche linguaggio a questo punto) server-side e a quali processi di elaborazione e controllo vengono sottoposti i file Asp.

Il file Asp, come tutti i file di un sito accessibile via Web, risiede sul server, quando un browser ne fa richiesta, il server lo elabora passandolo per il suo interprete Asp che, se riscontra un errore logico o di programmazione, restituisce al browser una pagina di errore con una piccola descrizione dello stesso, la riga e la posizione; se invece la pagina supera l'esame, il file torna al server che lo "trasforma" (non converte) in formato Html e lo invia al browser richiedente.

Non si pretende che quest'ultimo passaggio sia stato perfettamente compreso e visto nella sua ampiezza, ma le cose saranno chiare e tonde a partire dalla terza lezione del manuale.

Dopo tanto parlare di server e di server Web, credo sia il caso di accennare alle tecnologie di questo tipo che supportano Asp, onde evitare di sudare per un lavoro ed all'atto della sua pubblicazione accorgersi di aver pagato uno spazio Web infelice da questo punto di vista, che quindi non fornisca il supporto dell'Asp.

E' dunque necessario accertarsi che l'hoster a cui ci si rivolge offra la possibilità di lavorare con Asp e tutte le tecnologie connesse, e metta anche a disposizione tutti gli ActiveX necessari allo sviluppo delle singole applicazioni che ci accingiamo a sviluppare.

Non ci si preoccupi al momento di chiedersi quali sono le applicazioni che si hanno in mente o quali sono le possibili applicazioni che Asp ci permette di sviluppare, dato che solo con l'avanzamento del manuale tutto sarà più chiaro e le idee subiranno modifiche e cresceranno.

Per quanto riguarda gli spazi Web gratuiti che supportano Asp, consiglio vivamente di rivolgersi ai forum di discussione informatici come quello di HTML.it e spulciare tra i post nelle apposite sezioni.

2. Personal Web Server 

Nella lezione precedente si è accennato all'impossibilità di visualizzare e testare una pagina Asp in locale: un file presente sul nostro Hard Disk non può essere direttamente interpretato da un browser, ma deve prima essere elaborato da un server Web.

A risoluzione di questo problema ci vengono in soccorso taluni software che simulano sul nostro PC un server Web vero e proprio.

Il più vicino a noi, ovvero il più vicino ad Asp, è il Personal Web Server della Microsoft, che da ora ci limiteremo a chiamare PWS.

Il PWS si trova nel CD di installazione di Windows '98.

Installazione del PWS

Installare il PWS è un'operazione quanto mai semplice, simile in tutto e per tutto alle tipiche installazioni con interfaccia Windows.

Per facilitare il lettore, al fine di eseguire una corretta installazione del PWS, si andranno ad evidenziare i passi essenziali dell'installazione:

1. Localizzare la cartella PWS nel CD di Windows '98
2. Localizzare il file Setup.exe
3. Al momento della Scelta del tipo di installazione si scelga Tipica
4. Al momento dell'opzione Configurazione root del web lasciare default
5. Si consiglia di riavviare il sistema quando richiesto
6. Troveremo l'icona del PWS nella barra delle applicazioni, vicino all'orologio.

Per verificare se l'installazione è andata a buon fine, digitiamo nella barra degli indirizzi del browser il percorso
http://localhost
dove localhost è il nome di dominio del nostro server personale.

Si può ottenere lo stesso risultato utilizzando l'IP statico (o indirizzo di loop-back) del nostro PC, che in genere è
http://127.0.0.1
oppure inserendo il nome del proprio PC
http://lukeonweb
dove in questo caso il nome è lukeonweb.

E' possibile cambiare il nome del PC da Pannello di controllo / Rete / Identificazione e riavviare il sistema.

A questo punto troveremo sul nostro Hard Disk una nuova cartella sotto l'unità C:, questa è InetPub che conterrà un'altra cartella, wwwroot, che sarà la root (directory principale) del nostro server Web.

Il percorso, dunque, sarà
C:\Inetpub\wwwroot
Per toccare con mano, creiamo un file e chiamiamolo index.htm e pubblichiamolo (copia e incolla) in wwwroot e digitiamo nel browser
http://localhost/index.htm
Se il file che abbiamo appena creato si apre, possiamo non avere più dubbi sulla funzionalità del nostro PWS.

La stessa cosa faremo con tutti i nostri file Asp, basterà copiarli in wwwroot per essere più che certi che potremo leggerli e testarli anche in locale.

Prima di chiudere una considerazione: e se avessimo più di un sito cui stiamo lavorando che necessita di essere visualizzato tramite il protocollo http?

In breve, sul nostro Hard Disk abbiamo, nella cartella Documenti, sul Desktop o ovunque, tre cartelle, pippo, pluto e paperino e questi sono tre siti che stiamo costruendo.

Non possiamo copiare di sana pianta la cartella e credere di potervi accedere con l'indirizzo
http://localhost/paperino/index.htm
o meglio NON è questo il procedimento corretto.

Dobbiamo creare delle Virtual Directory, o directory virtuali, cosa più semplice a farsi che a dirsi:

1. Tasto destro sulla cartella paperino e selezioniamo Proprietà
2. Clicchiamo sulla scheda Condivisione Web
3. Selezioniamo l'opzione Condividi cartella

a questo punto ci apparirà una finestra con delle opzioni

Lettura: Consente al browser di leggere i file pubblicati
Scittura: Consente al browser di modificare i file pubblicati
Accesso origine script: Consente di accedere agli script il lettura ed in scrittura
Esplorazione dierctory: Simile a Gestione Risorse dei Windows, consente di visualizzare i file

Queste sono le voci principali, noi possiamo limitarci a selezionare le prime tre elencate, poi clicchiamo su [ OK ].

Sarà a questo punto possibile accedere all'indirizzo
http://localhost/paperino/index.htm
Buon lavoro con Asp!

3. Software di sviluppo 

Esistono molti software per lo sviluppo in Asp, molti di questi ci permettono anche di creare progetti direttamente sul server, interagendo col server Web, nel nostro caso col PWS.

Secondo la maggior parte degli sviluppatori il migliore, nonchè a questo punto il più utilizzato, è Ms Visual InterDev, programma della casa madre di Asp, la Microsoft.

Vediamo subito quali sono i vantaggi che questo software ci offre.

Per prima cosa permette il collegamento in remoto col server, sposanodosi perfettamente con i server Web della Microsoft stessa, supporta tutti i linguaggi di scripting server-side e client-side che possono interagire con Asp, nonchè l'Xml.

Ha un'interfaccia user-friendly come pochi, come tutti i software di sviluppo del pacchetto Visual Studio, di cui fa parte, porta sui lati una serie di menu e di griglie con tutte le proprietà riassunte in maniera schematica ed intelligente.

Colora il codice evidenziando in blu e grassetto le parole chiave sia nei blocchi di script Asp che in quelli Javascript, colora i commenti in verde ed il codice hrml con colori diversi, consentendo una buona lettura del codice, mantenendolo pulito e ordinato.

Supporta una serie di oggetti server di creazione della stessa Microsoft, chiamati controlli design-time, molto utili in fase di sviluppo di grosse e complesse applicazioni Web, limitando e semplificando il lavoro dello sviluppatore, sono oggetti leggeri, veloci ed estremamente funzionali.

Tra questi ultimi troviamo una serie di oggetti di tipo ActiveX dalle più svariate funzionalità.

Ultimo di questi pro, nonchè il più vicino alle nostre più immediate esigenze di apprendimento e di sviluppo, è l'autocompletamento del codice e la possibilità di scegliere da un menu in popup tutti i metodi e le proprietà dell'oggetto che stiamo utilizzando, includendo, all'occorrenza, anche i nomi degli elementi Html (soprattutto form) a cui potremmo far riferimento in quella routine, il tutto con estrema discrezione, senza cioè "pensare troppo al posto dello sviluppatore", InterDev non crede di aver capito cosa vogliamo fare e lo fa da solo, magari facendo perdere tempo in correzioni, ma si limita a darci degli utili suggerimenti.

Vediamo un esempio del comportamento di InterDev durante la scrittura di una porzione di codice:

Esistono comunque anche dei contro, come tutti gli editor, anche InterDev offre la possibilità di lavorare sull'Html in maniera visuale, ma finisce per formattare il codice in maniera "lievemente diversa" da come lo abbiamo scritto noi, rischiando di restituire dei malfunzionamenti dovuti ad esempio all'omissione di un apice in una porzione di codice.

Consiglio dunque agli sviluppatori che decidessero di servirsi del suddetto software di evitare di utilizzare questa funzione del programma.

Tuttavia nel corso di questo manuale non ci saranno altri riferimenti ad InterDev, a Notepad, con cui è possibile lavorare in Asp, o ad altri software, ma si focalizzerà l'attenzione sulla sintassi e la filosofia dell'Asp.

Altri software di sviluppo per Asp sono AspEdit ed altri normali editor Html dove sia stata selezionata l'opzione del supporto di Asp all'atto dell'installazione, come HotDog, HomeSite, Dreamweaver ecc...

Il mio consiglio, li dove ce ne fosse la possibilità, è quello di lavorare con InterDev, altrimenti il Notepad è più che sufficiente.

4. Implementare il codice 

Fatto tesoro di quanto appreso fin ora, possiamo da questo momento dedicarci completamente alla programmazione con Asp ed alla sua sintassi.

Asp ha dei suoi delimitatori proprietari per il codice, un blocco di script inizia con i simboli <% e finisce con i simboli %>, oppure è possibile utilizzare il Tag <script>, corredandolo degli attributi language="JScript" e runat="Server".

Una pagina Asp inizia con la dichiarazione del linguaggio di scripting, la dichiarazione è obbligatoria e va inclusa come prima riga della pagina, prima quindi di tutto il codice Html, ed anche del Tag <html>, la dichiarazione è la seguente:
<%@ LANGUAGE = JScript %>
nel caso in cui il linguaggio utilizzato sia JScript.

Vediamo ora come inserire nella pagina un blocco di script:
<%
   //Codice Asp, commentato per JScript
%>
Nota: quando utilizziamo la sintassi appena vista, cioè i simboli <% e %>, il server riconosce automaticamente il linguaggio di scripting che abbiamo settato per default.

A questo proposito ci torna in aiuto l'utilizzo del Tag <script>: se settiamo come linguaggio di default il JScript ad esempio, scriveremo il codice Asp-JScript tra gli appositi delimitatori, ma possiamo comunque scrivere in Asp-VBScript dichiarando il tipo di linguaggio "al volo" appunto con l'utilizzo del Tag <script>.

Constatiamo quanto appena detto con una pagina di esempio, scrivendo il classico programma Hello World!
<%@ LANGUAGE = JScript %>
<html>
 <head>
  <title>La mia prima pagina Asp</title>
 </head>
<body>

<%
   Response.Write("Hello World!");
%>

<br><br>

<script language="VBScript" runat="Server">
   response.write "Hello World!"
</script>

</body>
</html>
Salviamo questo file come prova1.asp e pubblichiamolo nella root del nostro PWS, poi apriamo il browser digitiamo http://localhost/prova1.asp.

Potremo notare che, visualizzando il codice Html, non vedremo le istruzioni Asp che abbiamo utilizzato, bensì la sola scritta Hello World!

Questo perchè, come già detto, il server elabora la pagina Asp e la restituisce al browser come Html puro.

Proviamo subito a scrivere qualcosa di un po più divertente, scriviamo sulla nostra pagina Asp l'ora corrente, che non sarà come in Javascript l'orario di sistema del proprio PC, ma l'orario del server dov'è pubblicata la pagina.

Ovviamente testando la pagina col PWS l'orario sarà comunque lo stesso del nostro sistema, dato che il nostro PC viene utilizzato come srver.

Creiamo il file prova2.asp e scriviamo:
<%@ LANGUAGE = JScript %>
<html>
 <head>
  <title>Ricavare l'ora con Asp</title>
 </head>
<body>

<%
   var data = new Date();
   var orario = data.getHours() + ":" + data.getMinutes() + ":" + data.getSeconds();
   Response.Write("Sono le ore " + orario);
%>

</body>
</html>
Noteremo che la pagina che viene restituita al browser non mostrerà la sintassi utilizzata all'interno del codice, ma l'orario (del server, NON del client) del momento in cui la pagina è stata inviata al browser, come nell'esempio sottostante:

Sono le ore 16:9:57


Nella prossima lezione affronteremo un altro metodo per l'inserimento del codice nelle pagine Asp, le inclusioni lato server con Server Side Include.

5. Server Side Include 

La libreria Server Side Include (SSI) è un'opzione di cui è dotato l'Asp, si tratta di un richiamo eseguibile da una pagina Asp verso un file Asp esterno contenente solo del codice Asp, o a file con estensione .inc (dove inc sta per "include").

E' possibile in questo modo scrivere una porzione di codice, come ad esempio una connessione al database, in un unico file esterno che potrà essere richiamato in tutte le pagine che necessitano di detto codice, in maniera tale da snellire sia il codice della pagina corrente che il lavoro dello sviluppatore.

Il richiamo ai SSI somiglia ad un commento Html. Il comando più noto dei SSI è #include e l'attributo (pensando in Html) più usato è file="connessione.asp" (o .inc), funzione che ci permette per l'appunto di richiamare file esterni.

La sintassi corretta per richiamare un file tramite la tecnologia SSI è
<!--#include file="connessione.asp"-->
dove, come già detto, nel file connessione.asp si trova lo script che consente all'applicazione Asp di interfacciarsi con un Database.

Questo richiamo va inserito nell'Header della pagina, tra i Tag <head> e </head> oppure all'inizio del file, prima della dichiarazione iniziale dell'Asp e prima del Tag <html>.

Ancora, nel caso in cui lo script preveda la stampa a video di un risultato, l'SSI può essere inserito all'interno del body della pagina nella posizione in cui deve apparire il valore a video, ne più ne meno di come si comportano i file Javascript (.js) esterni.

Nel caso precedente della stampa a video della data, avremmo potuto scrivere
<%@ LANGUAGE = JScript %>
<html>
 <head>
  <title>Ricavare l'ora con Asp</title>
 </head>
<body>

<div><!--#include file="data.inc"--></div>

</body>
</html>
Non tutti i server che supportano Asp supportano necessariamente anche gli SSI, è bene quindi informarsi presso il proprio (o eventuale) hoster in merito al loro supporto.

E' già difficile trovare spazi Web gratuiti che supportino Asp, ed è quasi impossibile sperare di trovarne uno che supporti anche gli SSI, consiglio quindi di effettuare un'accurata ricerca prima di scegliere l'Host su cui pubblicare il proprio sito, sia esso gratuito che a pagamento.

6. Oggetti built-in 

Asp offre ai programmatori una serie di oggetti server detti built-in, indispensabili per sfruttare al meglio i controlli detti ActiveX su cui si basa la sua modalità di programmazione.

Come già accennato nelle precedenti lezioni, gli ActiveX sono degli oggetti residenti sul server Web a cui le applicazioni Asp fanno correntemente riferimento, un classico esempio è CDONTS con cui è possibile inviare email.

In genere questi componenti vengono scritti in C++, Visual Basic, Java ed altri linguaggi dello stesso tipo, è anche possibile scriverne uno da se ed installarlo sul proprio server Web, se si ha la possibilità di essere amministratori di una simile tecnologia.

Nel corso di questa lezione esamineremo genericamente quali sono gli oggetti built-in che ci faranno compagnia nel corso della realizzazione di tutte le nostre applicazioni Asp, le prossime lezioni saranno poi dedicate alla specifica descrizione di ogni singolo oggetto built-in, con esempi e riferimenti ai Tutorial di questo sito.

Elenco degli oggetti built-in

  • Response - Il suo metodo principale è Write(), il suo comportamento è del tutto analogo a quello del document.write() di Javascript, ovvero restituisce in output un testo o dei Tag Html, il metodo Redirect(), invece, si comporta come il location.href di Javascript, attenzione però, non è possibile generare un link, ma solo, ad esempio, reindirizzare l'utente ad una pagina a seconda di determinate condizioni.

  • Request - Molto più vasto del precedente, questo oggetto torna utile per uno scambio di dati tra pagine diverse, il metodo più utilizzato è Form() che reperisce dati (tramite il metodo di invio post) da un modulo Html.

  • Server - Meno immediato dei precedenti, si occupa di reperire proprietà del server, il metodo più utilizzato è MapPath() che permette di specificare la Url relativa di un database o di un file di testo con cui l'applicazione deve interagire.

  • Session - Come il termine lascia immaginare, questo oggetto si occupa della gestione delle sessioni degli utenti, indispensabile, ad esempio, per la creazione di un'area di accesso riservato .

  • Application - Permette di condividere informazioni in maniera contemporanea con tutti gli utenti dell'applicazione, un classico esempio è la chat.

Questi saranno i titoli dei prossimi cinque appuntamenti col manuale di Asp, entrare nell'ottica in cui spero di avervi indotto con queste poche righe è indispensabile per affrontare in maniera corretta sia le prossime lezioni in se che, di conseguenza, la programmazione Asp.

7. Oggetto Response 

Eccoci di fronte al primo degli oggetti built-in offerti da Asp, trattasi di Response che, come accennato nella lezione precedente, si occupa di inviare output al client dell'applicazione, ovvero al browser dell'utente che sta visualizzando la pagina, vediamo subito le principali proprietà e metodi disponibili.

Proprietà dell'oggetto Response

Buffer

Serve a bufferizzare l'output in una pagina, per default è settata su false, quindi gli output non sono normalmente bufferizzati. Bufferizzare un output vuol dire inviare risposte al client in tempo reale al verificarsi di un evento, ad esempio la registrazione di un dato su un database: come già detto il server Web restituisce al client una pagina in formato Html, è quindi impossibile modificarne il contenuto senza inviare una nuova richiesta, lì dove l'output non è bufferizzato.

Per indicare al server Web che l'output deve essere bufferizzato si inizia uno script Asp con la dichiarazione
Response.Buffer = true;
Cookies

Serve ad inviare un cookie al client dell'applicazione una volta creato, si utilizza l'espressione
Response.Cookies("NOME_DEL_COOKIE");
Expires

Indica la durata del cookie all'interno della cache del browser, si indicano in genere i giorni di durata, se ad esempio il cookie deve scadere dopo un mese potremmo scrivere
Response.Expires = 30;
I cookie saranno oggetto di un capitolo dedicato più avanti nel corso del manuale.

Metodi dell'oggetto Response

Clear

Ripulisce un output bufferizzato

Flush

Restituisce al client un output bufferizzato

IsClientConnected

Verifica se un client utilizzato da un utente registrato ad esempio ad un servizio è connesso o meno, ovvero quello che vediamo sui forum quando ci vengono segnalati i nickname degli utenti attualmente online

Redirect

Reindirizza un utente ad una determinata pagina al verificarsi o meno di una determinata condizione, immaginiamo di creare un controllo su dei campi di un modulo, possiamo stabilire che se una condizione non viene soddisfatta, l'utente verrà rimandato ad una determinata pagina di errore creata ad hoc, la sua sintassi è molto semplice
Response.Redirect("errore.htm");
Write

Come accennato nella lezione precedente, questo particolare metodo si comporta come il document.write() di Javascript, possiamo utilizzarlo per far visualizzare all'utente un messaggio differente a seconda che una condizione sia stata soddisfatta o meno, più o meno come nel caso esposto in precedenza del metodo Redirect
Response.Write("Non hai compilato tutti i campi obbligatori")

8. Oggetto Request 

Meno immediato del precedente, l'oggetto Request serve ad inviare delle richieste al server Web, ad esempio tramite un modulo.

I quattro metodi principali di questo oggetto sono Cookies, Form, QueryString e ServerVariables.

Occupiamoci subito del primo e dell'ultimo metodo elencato, per lasciare spazio ai due centrali più frequentemente utilizzati.

Request.Cookies

Serve a recuperare un cookie, la sintassi è semplice
Request.Cookies("NOME_DEL_COOKIE")
Request.ServerVariables

Serve a recuperare una serie di variabili d'ambiente proprietarie del server Web di appartenenza o dei server Web collegati, ecco un elenco delle principali classi utilizzabili:

ALL_HTTP - Restituisce gli header http richiesti dal client
HTTP_COOKIE - Booleano, restituisce true o false a seconda che i cookie siano abilitati o meno
HTTP_REFERER - Restituisce il nome ed il dominio di un sito da cui è partita una richiesta da un client
HTTP_USER_AGENT - Restituisce il sistema operativo del client che si collega all'applicazione
HTTPS - Booleano, restituisce true o false a seconda che la connessione sia protetta da SSL
LOCAL_ADDR - Restituisce l'indirizzo del server Web di appartenenza
QUERY_STRING - Restituisce l'intera querystring associata alla richiesta del client
REMOTE_ADDR - Restituisce l'indirizzo IP server Web richiedente
REMOTE_HOST - Restituisce il nome del server Web richiedente

La sintassi è molto semplice
Request.ServerVariables("REMOTE_ADDR");
Request.Form

Questo è il primo metodo con cui è possibile inviare un pacchetto di dati al server Web perchè li elabori, il modulo Html verrà inviato specificando il metodo post, ad esempio
<form action="elabora.asp" method="post">
In questo caso il post avverrà al file elabora.asp, vediamo uno spezzone di un potenziale codice di questo file, che si occupi di inviare dati in un database o di altro non ci interessa, l'unica cosa che ci interessa è recuperare i dati inviati dal modulo:
var nome = Request.Form("nome");
dove la variabile nome è indicativa, in genere si utilizza lo stesso nome del campo a cui è associata, passato tra parentesi e tra doppi apici alla fine della stringa.

Esiste un altro modo di recuperare i dati da un form con questo metodo, è in realtà analogo ma in forma più completa, cioè passando la richiesta in una nuova stringa:
var nome = new String(Request.Form("nome"));
Ecco un classico esempio di differenza tra linguaggi di scripting client-side e server-side: non è possibile, ad esempio con Javascript, passare un dato tra due o più file, data l'impossibilità da parte di qualsiasi gestore di occuparsene... Asp pone rimedio a questo limite!

Request.QueryString

Simile al precedente, possiamo con questo metodo recuperare dati da un modulo appendendone i valori alla fine dell'Url della pagina di destinazione, ad esempio di elabora.asp, vediamo un esempio di possibile Url:

http://www.server.it/elabora.asp?nome=Luca

Prima di passare ad esempi concreti, analizziamo gli elementi e la struttura di una querystring:

? - Concatena il primo valore alla Url della pagina
& - Concatena dal secondo valore in poi alla Url della pagina
= - Identifica il valore
+ - Separa più parole (o valori) di una QueryString

Ecco un esempio più completo:

http://www.server.it/elabora.asp?nome=Luca&cognome=Ruggiero

Se il cognome fosse composto da più parole, ad esempio De Ruggiero, verrebbe utilizzato il carattere + in questo modo:

http://www.server.it/elabora.asp?nome=Luca&cognome=De+Ruggiero

Per reperire dati in questo modo dobbiamo inviare il form col metodo get, stabilito per default dalle convenzioni Html, ma è comunque meglio specificarlo:
<form action="elabora.asp" method="get">
Come nel caso precedente, possiamo recuperare il valore di un campo sia con la semplice dichiarazione
var nome = Request.QueryString("nome");
che con la più completa
var nome = new String(Request.QueryString("nome"));
E' opportuno evitare di utilizzare questo metodo per passare alla pagina Asp che elaborerà i dati nei casi in cui vengono inviati valori tipo password o carte di credito, venendo messi in chiaro sull'indirizzo della pagina, sarà possibile che un occhio indiscreto li legga stando seduto a fianco all'utente che compila il modulo, o che venga sfruttato da qualche professionista buontempone un bug di un browser per impossessarsi di certi dati.

Un esempio pratico dell'utilizzo del metodo Request.QueryString

La funzionalità di questo metodo ci permette di creare dei link che puntano direttamente alla querystring associata all'indirizzo, potremmo quindi creare un solo file Asp che, a seconda della querystring passata generi output diversi.

Creiamo un sommario di argomenti nel file index.htm:
<div>
   <a href="pagina.asp?id=1">Link a pagina 1</a><br>
   <a href="pagina.asp?id=2">Link a pagina 2</a><br>
   <a href="pagina.asp?id=3">Link a pagina 3</a><br>
</div>
In questo modo il file pagina.asp andrà a leggere la querystring passatagli nel link e si comporterà di conseguenza, immaginiamo di voler includere con le SSI un file diverso per ogni richiesta, ad esempio pagina1.htm, pagina2.htm e così via, ecco come si presenta il codice di pagina.asp:
<%@LANGUAGE = JScript%>
<%
   var id = new String(Request.QueryString("id"));
%>
<html>
 <head>
  <title>Oggetto Request</title>
 </head>
<body>

<%if ((id == "") || (id == "undefined")) {%> ERRORE 404 - File non trovato <%}%>
<%if (id == "1") {%> <!--#include file="pagina1.htm"--> <%}%>
<%if (id == "2") {%> <!--#include file="pagina2.htm"--> <%}%>
<%if (id == "3") {%> <!--#include file="pagina3.htm"--> <%}%>

</body>
</html>

9. Oggetto Server 

Come già detto nel paragrafo di presentazione generale degli oggetti built-in, l'oggetto Server, con i suoi quattro metodi ed una sola proprietà, fornisce alcune risposte dal server, spesso di estrema utilità per la realizzazione di applicazioni Web basate sul linguaggio Asp.

Esaminiamo dunque proprietà e metodi di questo oggetto.

Proprietà

La sola proprietà di cui dispone l'oggetto built-in Server è ScriptTimeout che specifica, in secondi, la durata di esecuzione dello script, oltre il cui tempo, lo script cessa di funzionare fino ad una nuova richiesta http lanciata al server dal browser.

La stringa
Server.ScriptTimeout = 300;
impegna il server ad eseguire lo script in soli cinque secondi (5 X 60 = 300), allo scadere del tempo stabilito il server terminerà di processare la pagina Asp in questione.

Metodi

Come già detto in precedenza, Server dispone di quattro metodi, esaminiamoli in ordine.

Il metodo CreateObject serve a generare una nuova istanza di una classe, in genere si tratta di componenti ActiveX (che esamineremo più avanti nel corso del manuale), ecco i principali:
  • MSWC.AdRotator - classe utilizzata per generare circuiti di rotazione banner
  • MSWC.BrowserType - classe che fornisce una serie di informazioni sul browser dell'utente, utile per creare sistemi di statistiche
  • Scripting.FileSystemObject - classe che consente di interagire con file e cartelle direttamente sul server
  • ADODB.Connection - classe che offre connettività ad una fonte di dati ADO (un database)
Quest'ultimo è sicuramente il più sfruttato, ipotizziamo la creazione di una connessione ad un database, dichiareremo una nuova classe ADODB.Connection, vediamo come:
var MiaConnessione = Server.CreateObject("ADODB.Connection");
Il secondo metodo dell'oggetto Server è HTMLEncode consente di applicare la codifica Html ad una stringa; questa tecnica è molto sfruttata per evitare il replace dei caratteri < e > durante la registrazione di un modulo, per evitare che, eventuali Tag Html inseriti, vengano interpretati come tali dal browser, rischiando di confondere notevolmente la struttura della pagina.

Ad esempio, la stringa
Response.Write(Server.HTMLEncode("<i>Hello World!</i>"));
non restituirà Hello World!, bensì &lt;i&gt;Hello World!&lt;/i&gt; nel codice, quindi <i>Hello World!</i> a video.

Il metodo MapPath serve a localizzare la un file con cui stiamo lavorando, sia che si tratti di un file di testo, di un file Xml, di un database ecc...
Riprendiamo l'esempio della connessione al database, nella creazione della stringa di connessione al file del DBMS che utilizziamo, dobbiamo specificare la posizione del file stesso sul server: MapPath ci permette di specificare il percorso relativo partendo dal file che lo richiama, piuttosto che il percorso assoluto.
Ad esempio, la stringa
Server.MapPath("database.mdb"));
permette di evitare di specificare un indirizzo del tipo
http://www.miosito.it/cartella/database.mdb
Ultimo metodo dell'oggetto Server, forse il meno utilizzato, è URLEncode, che aggiunge ad un'URL la sua codifica naturale: se, ad esempio, un file è stato nominato con degli spazi all'interno, come mio file.asp, URLEncode è in grado di aggiungere i caratteri %20 per unire le parole separate, restituendo

mio%20file.asp

10. Oggetto Session 

L'oggetto built-in Session
è talvolta indispensabile nell'ambito delle applicazioni Asp per la gestione di informazioni relative agli utenti; il suo scopo, infatti, è quello di memorizzare informazioni in un file e consentire al server Web di trasportarle in pagine diverse da quella in cui sono state inizializzate.

Iniziamo con un semplice esempio, memorizziamo in una sessione una stringa di testo, consideriamo il seguente codice:
<%@LANGUAGE = JScript%>
<%
   Session("esempio") = "Hello World!";
%>
<html>
 <head>
  <title>Oggetto Session</title>
 </head>
<body>

<%
   Response.Write(Session("esempio"));
%>

</body>
</html>
E' normale immaginare che il risultato di un simile esperimento sia la stampa a video della stringa "Hello World!".
Proviamo adesso da aggiungere un link a questo codice che punti ad un'altra pagina, in cui scriveremo
<%@LANGUAGE = JScript%>
<html>
 <head>
  <title>Oggetto Session</title>
 </head>
<body>

<%
   Response.Write(Session("esempio"));
%>

</body>
</html>
Anche in questo caso, nella seconda pagina, comparirà la scritta "Hello World!".
Proviamo adesso a chiudere la pagina ed a riaprirla: probabilmente la scritta "Hello World!" sarà ancora visibile, questo perchè, probabilmente il server Web non ha ancora distrutto la sessione, conservandola in una particolare area di memoria.

Ad un riavvio del server, o del sistema, aprendo il secondo file non dovrebbe apparire nulla, oppure la scritta undefined, ciò vuol dire che la sessione è stata distrutta.

Asp offre la possibilità di distruggere la sessione manualmente; il metodo Abandon() consente di terminare all'istante la sessione, questa è la tecnica con cui vengono costruite le pagine di logout per gli utenti; la proprietà Timeout, invece, consente di specificare in minuti il tempo che dovrà trascorrere prima che la sessione venga distrutta.

Solitamente una sessione muore dopo 20 minuti di inattività dell'utente, cioè prima che venga inviata al server una nuova richiesta http.

Scrivendo
Session.Timeout = 30;
modificheremo il tempo di scadenza della sessione da 20 minuti a mezzora.

Un esempio pratico: un'area di accesso riservato

La maniera più spicciola di mettere in pratica quanto detto è la realizzazione di una semplice area di accesso riservato... di solito il nome utente e la password vengono estratti da un database: non essendo ancora giunti a questo punto, ci limiteremo a memorizzare in delle semplici variabili una coppia di valori che serviranno ad un singolo utente a loggarsi.

Utilizzeremo un semplice modulo Html per permettere il login, immaginiamo di essere i soli sul nostro sito ad avere accesso a determinate informazioni contenute in determinate pagine; creiamo all'interno della cartella privata il file index.asp:
<%@LANGUAGE = JScript%>
<html>
 <head>
  <title>Area privata</title>
 </head>
<body>

<form method="post" action="login.asp">
   Username<br>
   <input type="text" name="username"><br>
   Password<br>
   <input type="password" name="password"><br>
   <input type="submit" value="Login">
</form>

</body>
</html>
Passo secondo, inviamo il modulo al file login.asp, utilizzeremo come username admin, e come password prova:
<%@LANGUAGE = JScript%>
<%
   // RECUPERO I DATI DAL MODULO
   var username = new String(Request.Form("username"));
   var password = new String(Request.Form("password"));

   // QUI SPECIFICO LA USERNAME E LA PASSWORD
   if ((username != "admin") || (password != "prova")) {
        Response.Write("ACCESSO NEGATO");
        Response.End;
   }
   else {
        // CREO LA SESSIONE ATTRIBUENDOLE IL VALORE DELL'UTENTE LOGGATO
        // IN QUESTO CASO SI TRATTA DI UN UTENTE STATICO, MA LA TECNICA E' QUESTA
        Session("username") = username;
        Response.Redirect("privata.asp");
   }
%>
Il file privata.asp è considerabile come la reale Homepage dell'area riservata:
<%@LANGUAGE = JScript%>
<%
   if (Session("username") == null) {
       Response.Write("ACCESSO NEGATO");
       Response.End;
   }
%>
<html>
 <head>
  <title>Area privata</title>
 </head>
<body>

... CONTENUTO DELL'AREA PRIVATA ... ... ...

<a href="logout.asp">LOGOUT</a>

</body>
</html>
Tutti i file facenti parte dell'area riservata devono contenere il codice evidenziato in rosso prima di qualsiasi Tag Html, in modo da inibire l'accesso qualora la sessione fosse nulla; supponiamo che da questa pagina fosse possibile anche effettuare il logout, creiamo quindi un link verso il file logout.asp:
<%@LANGUAGE = JScript%>
<%
   Session.Abandon();
%>
<html>
 <head>
  <title>Area privata</title>
 </head>
<body>

<div align="center">ARRIVEDERCI!!!</div>

</body>
</html>
Con questo semplice e funzionale esempio di area di accesso riservato si conclude la decima lezione di questo manuale, oggetto della prossima lezione è l'ultimo degli oggetti built-in di Asp: Application.
copyright © 1999-2003  All right reserved