| index I sicurezza I ping e altri comandi I manuali I install server I download I curriculum I ftp |
| crittografia I demo flash I siti realizzati I tutto audio wav-mp3 I mail |
asp
Guida Teorica di ASP a cura di Lorenzo
Pascucci da www.html.it
Web statico e Web interattivo
In principio il Web era una semplice collezione di pagine HTML statiche
collegate tra di loro tramite link ipertestuali. Lo scopo principale era quello
di rendere disponibile su Internet documenti correlati come in un enorme
ipertesto. La necessità di una maggiore interattività tra l’utente e il
server Web, nata soprattutto nel momento in cui grandi aziende hanno visto nella
rete delle reti, un nuovo veicolo commerciale, ha indirizzato gli sforzi nello
sviluppo di strumenti per rendere il Web sempre più "dinamico". Un
classico esempio è dato dai motori di ricerca: l’utente inserisce in una form
una parola chiave e invia al server la richiesta restando in attesa di una
risposta in tempo reale. Dalla parte del server viene a questo punto attivata
una procedura in grado di interrogare un database e di generare una pagina HTML
con la lista dei link richiesti. Per fare questo, l’HTML non è sufficiente e
quindi è stato introdotto da subito uno standard che consentisse di far
comunicare le richieste HTTP con una applicazione residente sul server, lo
standard CGI (Common Gateway Interface).
Sinteticamente, l’interazione tra browser e applicazione CGI segue i questa
procedura:
-il
browser invia al server Web una richiesta facendo riferimento al nome
dell’applicazione seguita da una serie di parametri;
-il server Web riconosce che la richiesta deve essere indirizzata
all’applicazione specificata e ne attiva un’istanza passandole
opportunamente i parametri
-l’applicazione effettua l’elaborazione in base ai parametri acquisiti e
crea sullo standard output un flusso di dati che costituisce la pagina di
risposta per il browser.
-il server Web cattura il flusso di dati generato dall’applicazione CGI e la
trasforma in una risposta HTTP
L’applicazione
CGI può essere uno script di shell del sistema operativo o di un linguaggio
interpretato (ad esempio Perl) oppure una applicazione vera e propria sviluppata
con un qualsiasi linguaggio di programmazione e che segue alcune regole per
interfacciarsi con il Web.
Client-side scripting
L’interfaccia CGI tuttavia presenta dei limiti: ad esempio anche per semplici
elaborazioni vengono richieste molte risorse al server, e in certi casi ciò può
portare a ritardi sulla risposta o ad un eccessivo carico sul server stesso. Si
pensi al caso di invio di dati in qualche modo errati (ad esempio, una data non
valida) che attivano un’istanza di applicazione CGI con l’unico effetto di
notificare l’erroneo inserimento di dati e con la conseguenza di consumare
risorse del server e della banda di trasmissione.
Per
superare questo genere di problemi, Netscape prima e Microsoft dopo, hanno
pensato di permettere ai loro browser, di interpretare particolari linguaggi,
detti linguaggi di scripting (JavaScript, Jscript e VBscript), che permettono al
client di effettuare alcune semplici elaborazioni, permettendo sicuramente al
server di alleggerire il carico e dando una spinta decisiva verso le attuali
capacità interattive del Web.
Introduzione ad ASP
Il successo ottenuto dal client-side scripting ha portato in breve tempo allo
sviluppo di linguaggi di scripting anche per il lato server, iniziando prima con
ambienti specializzati, come ad esempio Borland IntraBuilder dove è Javascript
il linguaggio sever-side utilizzato e poi orientandosi verso linguaggi di
scripting integrati nel server Web, come ad esempio in Netscape Enterprise
Server.
Cavalcando questa tendenza, la Microsoft, rilasciando la versione 3.0 di
Internet Information Server (IIS), ha introdotto sul mercato degli scripting
server-side, la tecnologia Active Server Pages (ASP), con l’idea di sfruttare
non solo le potenzialità degli strumenti server dedicati alla connettività, ma
anche attraverso la tecnologia COM (Common Object Model), sfruttare tutte le
risorse che il server Microsoft ha a disposizione e coinvolgendo anche i
linguaggi di scripting come Jscript e Vbscript.
A cosa serve e come funziona
Le
pagine ASP sono completamente integrate con i file HTML, sono facili da creare e
non necessitano di compilazione, sono orientate agli oggetti e usano componenti
server ActiveX.
Possiamo
affermare che ASP, è lo strumento che riesce a far convogliare tutte le risorse
disponibile sul server, per realizzare un sito Web (che nell’ottica ASP
coincide con una applicazione) che possa sfruttare diverse tecnologie in modo
trasparente.
Le
pagine di un sito non sono più una semplice collezione di documenti HTML ma un
insieme di pagine contenenti codice script interpretabile dal server Web, il
quale effettua le elaborazioni specificate prima di inviare la pagina HTML
risultante al browser che l’ha richiesta.
E’ da sottolineare che il risultato della elaborazione del motore ASP, è una
pagina HTML standard che offre di conseguenza il vantaggio, di essere
indipendente dal tipo di browser utilizzato. La figura sintetizza lo schema di
funzionamento di un’applicazione ASP:
-Il
browser richiede una pagina ASP;
-il Web server preleva la pagina ASP ed attiva l’interprete ASP per la
pre-elaborazione della pagina, coinvolgendo eventualmente altri componenti
presenti sul server
-il risultato dell’elaborazione eventualmente altri componenti presenti sul
server
-il risultato dell’elaborazione viene inviato al browser tramite il protocollo
HTTP
ASP e client/server
Tra
i vantaggi di ASP, è stato messo in risalto, la generazione di pagine Web in
HTML standard, ottenendo in tal modo una completa indipendenza
dell’applicazione Web dal particolare browser utilizzato. Questo aspetto
comporta tuttavia un lavoro notevole per il server che deve generare pagine
statiche. In un certo senso questa soluzione è in contrasto con il modello
client/server secondo il quale il carico di lavoro di elaborazione viene
suddiviso tra le due entità. L’introduzione stessa dei linguaggi di scripting
client side aveva questo scopo. Con ASP si dovrebbe quindi dedurre un ritorno al
modello centrato esclusivamente sul server. Invece ASP mette a disposizione del
progettista, la possibilità di decidere quale parte del codice far eseguire dal
client e quale dal server, magari decidendolo sulla base del browser utilizzato.
ASP e i suoi utilizzi
Definire
i contesti di applicazione di ASP, equivale a definire i contesti in cui è
opportuno utilizzare elaborazioni sul server. Tuttavia è possibile delineare
alcuni tipi di applicazione per le quali ASP può essere una soluzione indicata.
L’utilizzo per cui era stata progettata la tecnologia ASP, era originariamente
quello di interfacciare il browser con un database, ma basandosi sul modello COM
(Component Object Model), ASP è in grado di interagire con le applicazioni che
seguono questo standard e riportare i risultati di questa interazione sotto
forma di pagine Web. Ad esempio la richiesta di un utente di visualizzare una
tabella si traduce in una richiesta da parte di ASP verso il database di
accedere alla tabella in questione, rappresentarla internamente tramite un
oggetto ADO e tradurre il contenuto della tabella in una serie di tag HTML. La
possibilità di interagire con database ODBC compatibili, pone ASP come uno dei
mezzi più efficaci per la realizzazione di applicazioni distribuite
indipendentemente dal database utilizzato.
Inoltre il principio di interazione con applicazioni COM consente alle pagine
ASP, di colloquiare con sistemi di posta elettronica (ad esempio Exchange o SMTP
server) oppure interagire con applicazioni Microsoft come MTS (Microsoft
Transaction Manager e Message Queue Server). Infine, attraverso la tecnologia
ActiveX , è possibile estendere le funzionalità di ASP, progettando ex-novo,
altri oggetti.
Che cosa è ASP
Fino a qualche anno fa (pochi) i siti erano statici, aggiornarli significava
perdere tantissime ore di lavoro e spesso non bastava. Oggi, grazie a Microsoft,
possiamo semplificare la vita di webmaster attraverso ASP, che non è altro che
un linguaggio di scripting (i
linguaggi con cui possiamo programmare in asp sono: JavaScript, Visual Basic
Script, PerlScript e Python).
Le Active Server Pages permettono di rendere dinamici, interattivi, facile da
gestire e da aggiornare i siti web. Una pagina asp, invece di chiamarsi
esempio.html sarà chiamata esempio.asp, quindi basta rinominare le pagine .html
in .asp. Naturalmente tali pagine non
sono scritte completamente in asp, ma è un "misto", il tutto rende
questo linguaggio ancora più potente, soprattutto velocizza la sua esecuzione.
Caricando una pagina asp dal broswer e visualizzando il suo codice sorgente,
noteremo che si tratta di semplice codice html, ma qual è allora la differenza
tra questi due linguaggi? Le Active Server Pages lavorano a lato server.
Cosa significa? Quando viene richiesta tale pagina, il server interpreta il
codice e lo restituirà al client (broswer) in semplice formato html. Ecco la
vera potenza di asp.
Se per esempio devo inserire l’ora corrente, mi basterà scrivere una riga di
codice asp, però una volta interpretato e visualizzata la pagina, nel codice
della pagina web non comparirà il codice asp, ma solo quello html.
Stanchi di tutta questa teoria? Passiamo allora ad un esempio pratico.
Una volta, i primi programmatori asp come iniziazione dovevano realizzare la
famosa pagina "hello
world" per realizzarla vi rimandiamo alla lezione sul nostro sito web
nella sezione tutorials Asp.
Per capire meglio come funziona l’interpretazione del codice asp, ecco un
semplice esempio.
Visualizzare la data corrente.
CODICE
1 <%@ Language=VBScript %>
2 <html>
3 <head>
4 <title> Visualizza data di oggi </title>
5 </head>
6 <body>
7 Oggi è il giorno
8 <%= Response.Write Date() %>
9 </body>
10 </html>
Come notiamo è presente del normale codice html e del
codice presente tra <% testo %>.
Ogni qual volta che c’è del testo tra questi due tag, ci troviamo di fronte a
del codice asp, che gli ultimi editor di pagine web visualizzano spesso in
rosso.
Il broswer visualizzerà semplicemente :
Oggi è il giorno 24/06/02
E il codice sorgente della pagina web, non sarà più il
precedente, ma il seguente:
<html>
<head>
<title> Visualizza data di oggi </title>
</head>
<body>
Oggi è il giorno 01/01/1999
</body>
</html>
Come vediamo il codice asp è sparito perché interpretato dal server che
lo ha restituito come semplice html.
Con il primo esempio, abbiamo già indicato alcuni dei componenti
principali delle Active Server Pages. All’inizio di ogni pagina asp, è sempre
bene, ma non obbligatorio, specificare il linguaggio di scripting
utilizzato, questa deve essere la prima riga della pagina:
<%@ Language=VBScript %>
In questo caso è stato specificato che viene utilizzato codice Visual
Basic Script. Nella riga 8 inoltre è presente ulteriore codice asp, che ha
il compito in questo caso di visualizzare la data. Vediamo come :
Response.Write Date()
Response.Write ha il compito di visualizzare tutto ciò che lo segue, in
questo caso Date() che non è altro che una variabile che contiene la data
corrente e Response.Write non fa altro, appunto, che visualizzare tale
data.
Portabilità di ASP
Abbiamo
detto che ASP è stato introdotto da Microsoft nel 1997. E' quindi uno standard
relativamente giovane e legato alla tecnologia della azienda di Redmond.
Infatti, affinché il codice ASP possa essere interpretato, c'è bisogno che il
Web server utilizzato, sia un server Active X come ad esempio IIS o Personal
Web Server (anche se per quest’ultimo ci sono alcune limitazioni di
utilizzo). Ultimamente (in particolare dalla Chili Soft con Chili!ASP) sono
state realizzate anche versioni per Netscape Enterprise, Lotus Domino, Solaris.
Altre aziende stanno invece producendo moduli aggiuntivi, scritti in Java, per
server Unix (Linux, Novell, Sun, Macintosh, HPUX, SGI, SCO,Dec Alpha, IBM OS/2,
RS/6000, AS/400, S/390, Apache, FastTrack/Enterprise servers, Sun WebServer,
Java WebServer,IIS, WebSphere and Lotus Domino). In particolare Chili Software
ha annunciato lo sviluppo di una nuova tecnologia, Denominata Chili!Beans, che
consentirà di interfacciare applicazioni ASP e componenti JavaBean: ciò
renderebbe ASP totalmente esportabile e in grado di imporsi come standard. Altro
fatto che fa pensare ad ASP come una soluzione di successo, è l’indirizzo
architetturale dato ad alcuni ambienti applicativi. Essi infatti, si ispirano
direttamente a questa tecnologia, come nel caso dell’estensione Cold Fusion
Markup Language, che definisce un linguaggio di markup proprietario destinato
all’interpretazione da parte di alcuni Web server.
Ma l’esempio più clamoroso è costituito dalla Sun che ha scelto di emulare
ASP utilizzando la tecnologia Java direttamente all’interno di pagine HTML,
con JSP (Java Server Pages).
Integrazione
Il
fatto che ASP, sia una tecnologia Microsoft, non preclude che questa tecnologia
non possa essere utilizzata con prodotti non proprietari della stessa casa
software.
ASP e COM
ASP
è perfettamente integrato nell’Active Server Model di Microsoft: esso
rappresenta un ponte che mette in comunicazione il Web server e i componenti COM
presenti sul server. Un’applicazione ASP complessa può essere costituita da
una serie di componenti messi in relazione tra di loro e con il Web server
mediante un linguaggio di scripting. Questo comporta l’uso di tecniche note
per la realizzazione di componenti o il riuso di componenti pre-esistenti, purché
questi non facciano uso di elementi visuali, come finestre, toolbar, ecc.
L’utilizzo di componenti esterni al Web server consente di estendere le
funzionalità dell’ambiente ASP e di costruire applicazioni complesse o
interfacciare applicazioni esistenti con il Web. Un ruolo fondamentale per
l’aggancio dei componenti esterni viene affidato all’oggetto predefinito
Server, che tramite il metodo CreateObject() crea una connessione ad
un’istanza di un oggetto ActiveX. La sintassi di CreateObject() è la
seguente:
Server.CreateObject(progID)
dove progID è l’identificativo della classe o il tipo di oggetto da
istanziare nel formato AppName.ObjectType, con AppName il nome del componente e
ObjectType la classe. Una volta istanziato l’oggetto, è possibile utilizzarne
tutti i metodi e le proprietà pubbliche.
Ad esempio, supponendo di avere a disposizione un componente per la gestione di
magazzino (Magazzino) che fornisce un oggetto per la gestione degli articoli
(Articolo), è possibile creare una sua istanza da un’applicazione ASP tramite
l’esecuzione della seguente istruzione JScript:
ArtMag = Server.CreateObject("Magazzino.Articolo")
Da questo momento in poi è possibile invocare qualsiasi metodo dell’oggetto
facendo uso della classica dot notation, cioè la sintassi Oggetto.Metodo.
ASP e BackOffice
L’integrazione
di ASP nel modello COM si evidenzia particolarmente nell’interfacciamento con
i prodotti Microsoft della famiglia BackOffice. Infatti, con la versione di ASP
fornita con IIS 4.0 è disponibile un oggetto predefinito (ObjectContext) per
l’interazione con MS Transaction Server, una serie di componenti per
l’interazione con MS Exchange Server e SMTP Server (Collaboration Data Objects
for NT Server) e un insieme di componenti per dialogare con MS Message Queue
Server.
L’insieme di questi componenti consentono di realizzare applicazioni robuste
ed efficienti con poco sforzo. Per fare un esempio, è possibile effettuare dei
trasferimenti di articoli da un magazzino ad un altro, affidando la gestione
della transazione a MS Transaction Server. Con i Collaboration Data Objects for
NT Server (CDONTS), è possibile realizzare sistemi di gestione di messaggi e
posta elettronica su Web veramente sofisticati, sfruttando le potenzialità di
MS Exchange Server e SMTP Server e ottimizzando l’invio di informazioni
asincrone tramite i componenti di MS Queue Server.
ASP e database
Un
ruolo senza dubbio rilevante di ASP è quello di mediatore tra Web server e un
sistema di gestione di database. Questo è infatti l’uso più comune di questa
tecnologia, un uso che ne ha senz’altro favorito il successo. Grazie ad
ActiveX Data Object (ADO) è possibile accedere a qualsiasi database ODBC o
OLEDB compatibile, usufruendo dei vantaggi che questa tecnologia offre, tra i
quali la semplicità di accesso ai dati e l’indipendenza dell’applicazione
dal tipo di database.
Tramite ADO, la gestione di un database non presenta particolari difficoltà.
ASP supporta un’efficiente gestione delle connessioni ad un database
sfruttando la funzione di connection pooling di ODBC 3.5. Questa funzione
consente la condivisione di una connessione tra richieste provenienti da utenti
diversi, evitando di creare nuove connessioni, operazione che riduce le
prestazioni del database, e riducendo il numero di connessioni inattive.
Supporto dei linguaggi di scripting
Un
linguaggio di scripting non è un vero e proprio linguaggio di programmazione:
con un linguaggio di scripting è possibile effettuare elaborazioni e gestire le
risorse messe a disposizione da un ambiente ospite, ma non è possibile
realizzare applicazioni complete ed autonome. ASP consente di utilizzare un
linguaggio di scripting all’interno del Web server. In realtà, è possibile
utilizzare più linguaggi di scripting all’interno di un’applicazione ASP e
addirittura all’interno di un file ASP.
ASP supporta in modo nativo due linguaggi di scripting, VBScript e JScript. Se
non diversamente specificato, ASP interpreta il codice script che trova
all’interno dei marcatori <% e %> come codice VBScript, il linguaggio
predefinito. E’ possibile comunque modificare il linguaggio predefinito sia a
livello di Web server, cioè per tutte le applicazioni ASP gestite da IIS, che a
livello di singola applicazione, cioè per tutte le pagine che compongono
un’applicazione. E’ comunque da tener presente che impostare un linguaggio
predefinito può portare problemi di compatibilità con altri Web server non
adeguatamente configurati: infatti, portando un’applicazione ASP da un Web
server con JScript come linguaggio predefinito su un Web server con VBScript
predefinito è evidente che la sua esecuzione causa problemi di interpretazione
sul server di destinazione.
Tramite la direttiva @ LANGUAGE è possibile specificare il linguaggio da
utilizzare all’interno di una determinata pagina ASP. Così, ad esempio, se
una pagina ASP contiene come prima linea la direttiva
<% @
LANGUAGE = "JScript" %>
il motore ASP interpreterà il codice contenuto all’interno di quella pagina
come codice JScript.
Inoltre, all’interno di una pagina possono essere utilizzati linguaggi di
scripting diversi, potendo sfruttare al massimo le caratteristiche proprie di
ciascuno di essi. Utilizzando una versione arricchita del tag <SCRIPT> è
possibile specificare che un blocco di codice deve essere interpretato secondo
un determinato linguaggio:
<SCRIPT
LANGUAGE="VBScript" RUNAT="Server" >
Codice script
</SCRIPT>
L’attributo RUNAT specifica a che livello deve essere interpretato lo script;
se non viene impostato, lo script è destinato all’interpretazione da parte
del browser.
Oltre a VBScript e JScript, è possibile utilizzare un qualsiasi linguaggio di
scripting il cui scripting engine sia stato installato sul Web server. Uno
scripting engine è un interprete di un determinato linguaggio realizzato come
oggetto COM secondo lo standard ActiveX Scripting (www.microsoft.com/management/wsh.htm).
Gli scripting engine di VBScript e JScript sono installati insieme a IIS;
tuttavia è possibile installare uno scripting engine anche per altri linguaggi,
come REXX, Perl, Python. Un esempio di scripting engine Perl è PerlScript di
Activeware. In genere l’installazione di uno scripting engine non è
un’operazione complessa; occorre tuttavia effettuare alcune modifiche manuali
al registro di sistema quando si installano scripting engine di linguaggi che
non supportano la dot notation per l’accesso ai metodi di un oggetto.
ASP: La sintassi
Come già detto il codice ASP deve essere compreso tra i tag <% e %>.
Esiste un altro modo, ma è molto più scomodo, ed è quello di utilizza il tag
SCRIPT:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Response.Write “Prova”
</SCRIPT>
Come vediamo tutto questo possiamo scrivere semplicemente :
<% Response.Write “Prova” %>
o ancora più sinteticamente:
<%=”Prova”%>
Il risparmio di tempo? Notevole!
L’uso di <% e %>
Come va scritta un’istruzione asp?
Ci sono diversi metodi, che illustriamo di seguito:
<%
Response.Write Date()
%>
<% Response.Write Date() %>
<% Response.Write Date()
%>
<%
Response.Write Date() %>
Questi sono tutti esatti…
E’ sbagliato scrivere una stessa riga di istruzioni su più righe, in questo
modo:
1 <%
2 Response.Write
3 Date()
4 %>
Tale script, ci restituirà un errore del genere:
Errore di run-time di Microsoft VBScript errore "800a01c2'
Numero errato di argomenti o assegnazione di proprietà non valida: 'Write'
/test/test.asp, riga 2
Tale scritta ci indica che sulla riga 2 si è verificato un errore. Infatti,
come abbiamo detto, una stessa istruzioni non si può trovare su due o più
righe, l’unico modo per farlo è il seguente:
1 <%
2 Response.Write _
3 Date()
4 %>
Ovvero dobbiamo utilizzare il carattere di sottolineatura (che troviamo sullo
stesso tasto del trattino).
Il codice ASP inoltre si può scrivere indifferentemente sia in MAIUSCOLO che
minuscolo, senza che comporti errori. In genere, ma non è obbligatorio, si
scrivono in maiuscolo le iniziale degli oggetti (Response è uno dei 6 oggetti
di ASP), ma anche delle variabili e altri comandi. Troviamo, invece spesso,
scritto totalmente in maiuscolo gli operatori (quali AND e OR) e tutti i comandi
compresi nelle stringhe di connessione al database. Naturalmente queste sono
tutte formalità e non è obbligatorio rispettarle, comunque aiutano spesso ad
una più veloce comprensione del codice.
Commenti
Anche in ASP, come in html, si possono scrivere dei commenti.
Se stiamo scrivendo codice in VBScript basta utilizzare un semplice apice ¢, in
questo modo:
<%
’ commento
%>
mentre se scriviamo codice in JavaScript, utilizzeremo due // :
<%
// commento
%>
Ma a cosa serve il commento e come viene interpretato dal server? Il commento è
molto utile in quanto permette una più veloce lettura dello script. Grazie a
questi possiamo dividere grossi script in blocchi. Solitamente si usa una cosa
del genere:
<%
codice
‘************** invio email
codice per invio email
‘************** inserimento dati nel database
codice per inserimento dati nel db
%>
I commenti sono spesso utili anche per i futuri programmatori che analizzano lo
stesso codice. Come è facile immaginare questi non sono interpretati dal server
e quindi non vengono restituiti nemmeno in codice html.
Gli Errori
In questa stessa lezione, abbiamo analizzato per la prima volta, un messaggio di
errore che ci stato restituito dal server (in questo caso da PWS
di cui trovate una lezione sul nostro
sito)
Ogni qual volta che compare un errore, spesso ci viene indicata la riga dove
questo è avvenuto. Stiamo parlando del debug, ovvero scrivendo script grandi,
lunghi e complessi, ma anche semplici di poche righe si possono commettere
giustamente degli errori, che per fortuna ci vengono sempre notificati.
Del debug ne parleremo più avanti in quanto è un argomento molto importante
che va approfondito non appena avremo realizzato uno script completo.
SUGGERIMENTO: testare i file asp sul proprio PC e non sul server
Senza fare 100mila upload e prove sul server del proprio provider, esiste un
comodo metodo (anche se limitato) offerto da MS
PWS (Microsoft Personal Web Server). Questo programma permette di simulare
un server NT con logicamente molte limitazioni. Questo programma è gratuito e
si trova nel cd-rom di Windows. Funziona con Win 95/98 Me e NT Workstation. La
guida all’utilizzo la trovate cliccando
qui.
ASP: Response.Write
Cosa è e come funziona Response.Write?
Come abbiamo già detto la sua funzione è di visualizzare del testo, anche
se, vedremo più avanti, in altre occasioni, può Response può essere
utilizzato ad altri scopi.
Per visualizzare del testo la sua sintassi è:
Response.Write ("testo")
Nella pagina web, comparirà, quindi la parola "testo". E’ possibile
anche utilizzare codice html al suo interno, che verrà correttamente
interpretato.
Response.Write ("<b>testo</b>")
Tale riga, farà apparire la parola o più parole in neretto.
Naturalmente si possono inserire tutti i tipi di tag html.
Abbiamo, visto, che è possibile inserire una variabile
senza utilizzare la parentesi e le virgolette, ma se dovessimo
visualizzare del testo con a fianco un risultato ottenuto da un
calcolo effettuato con asp? Ecco come è possibile!
Response.Write ("Il risultato è: " &
nomevariabile & "/100")
Ciò è possibile, chiudendo le virgolette, e inserendo il nome della
variabile tra due E commerciale (&). Come vedremo più avanti, la e
commerciale sarà molto utilizzata in quanto permette di unire più parole,
numeri e permette di realizzare le stringhe, frasi, ecc...
ASP: Memorizzare i Dati
Finalmente entriamo nella programmazione in asp! logicamente siamo ancora agli
inizi!
Come ogni linguaggio di programmazione \ scripting, anche ASP necessita di
alcuni oggetti in cui memorizzare i dati... tali oggetti si chiamano VARIABILI e
ne esistono di vario genere, a secondo del loro utilizzo. Infatti esse possono
contenere una parola, numeri, una stringa...
A secondo del loro tipo, con esse poi, possiamo farci delle operazione che
vedremo più avanti sempre in queste lezioni.
In ASP le variabili si divino in:
- Stringa (testo)
- Data (data e ora)
- Numeri interi
- Numeri decimali (numeri con la virgola)
- Variabili booleane (valori True e False, vero e falso)
- Oggetto (per i database)
- Valuta (visualizzazione valuta)
Infine, con VisualBasic Script abbiamo anche la variabile VARIANT che è una
variabile che può contenere diversi tipi di dati.
Al contrario di molti linguaggi di programmazione, VBScript non necessita di
dichiarare le variabile, ma è sempre consigliato soprattutto per effettuare il
debug finale. Dichiarare le variabili significa che si deve precisare i nomi
delle variabili.
NOTA: in VBScript non si deve indicare che tipo di variabili sono (integer,
char, string,...). Si possono dichiarare in qualsiasi punto del codice,
logicamente prima del loro utilizzo. Queste devono per forza essere dichiarate
solo se all'inzio del codice abbiamo inserito
<% Option Explicit %>
Le variabili si dichiarano con Dim, in questo modo:
Dim nomevariabile, nomevariabile2, nomevariabile3
Dim nomevariabile4
Dim nomevariabile5, nomevariabile6
Per assegnare un valore alla variabile basta seguire la
seguente sintassi:
nomevariabile = valore
esempio:
messaggio = "Benvenuto"
oppure, una variabile può essere uguale ad un'altra
variabile, così:
testo = messaggio
Scritto così ha forse poco senso, ma l'ultimo metodo
indicato serve per effettuare operazioni matematiche.
Abbiamo introdotto un nuovo argomento: i calcoli
matematici, ecco una tabella che indica tutti gli
operatori utilizzabili. Questi operatori sono messi
in ordine di importanza (ovvero il primo viene eseguito
prima rispetto a quelli successivi).
() vengono prima effettuati i calcoli in parentesi
^ potenza (x^y -> x elevato y)
- negazione (- x -> x * -1)
* prodotto
/ divisione (risultato 5.321)
\ divisione tra numeri interi (risultato 5)
Mod modulo (trova il resto di una divisione, 5 Mod 2 -> 5 diviso 2 ha un
resto di 1)
+ addizione
- sottrazione
& unione stringhe (unisce stringhe x & y)
= uguale (x=y)
<> diverso (x<>y -> x diverso da y)
< minore (x<y -> x minore di y)
> maggiore (x>y -> x maggiore di y)
<= minore uguale (x<=y -> x minore o uguale a y)
>= maggiore uguale (x>=y -> x maggiore o uguale a y)
Not (Not x -> x al contrario, ovvero se è Vero diventa Falso o viceversa)
And entrambi stesso valore vero o falso ( x AND y, se entrambi sono valori veri)
Or almeno uno valore vero (x OR y, se almeno uno è vero o falso)
Xor falso (x Xor y, se solo uno dei due è Vero o Falso)
Eqv entrambi valore falso o vero (x Eqv y, entrambi con valore vero)
Imp uno è falso l'altro è vero (x imp y, x è falso e y vero)
A fianco di ciascun operatore è stato illustrato il
suo significato e la sintassi per utilizzarlo.
Per memorizzare i dati, infine, abbiamo altri due
metodi molto simili:
- COSTANTI
- ARREY
Le costanti sono come variabili, solo il loro valore
una volta assegnato rimane sempre quello e quindi
non può variare. Logicamente il valore gli viene
assegnato subito.
Esempio di sintassi:
Const Euro = 1956
Gli array, invece, sono un gruppo di variabili che
contengono spesso informazioni dello stesso tipo e
gruppo (es. un insieme di nomi).
Esempio di sintassi:
Dim nomearray(4)
nomearrey(0) = 1
nomearrey(1) = 2
nomearrey(2) = 3
nomearrey(3) = 4
nomearrey(4) = 5
Dove nomearray(4) significa che contiene 4+1 campi
di memorizzazione.
VISUALIZZAZIONE DEI DATI
Come già detto nelle lezioni precedenti, per
visualizzare i dati abbiamo due metodi:
<% Response.Write nomevariabile %>
oppure
<%=nomevariabile%>
ASP: Le strutture di Controllo
Attraverso le strutture di controllo possiamo far decidere il programma asp di
svolgere una azione invece di un'altra a seconda di date informazioni.
Le strutture di controllo sono:
If... Then
If... Then... Else
Select Case
Do While... Loop
Do Until... Loop
While... Wend
For... Next
Cicli Infiniti
Cicli Annidati
Come vedete sono molte anche se alla fine la logica delle loro operazioni è
spesso simile (sono principalmente 3). E' per questo che per essere sintetici
inseriremo semplicemente la struttura e rimandiamo per eventuali domande e
richieste sul nostro forum.
IF... THEN
E' sicuramente la struttura di controllo più utilizzata sia per la sua utilità
che per la sua semplicità.
Ecco la sua struttura:
Poniamo che "variabile = dato" sia riassunto con "controllo"
naturalmente in controllo possono essere utilizzati quasi tutti gli operatori
logici descritti nella precedente lezione.
IF controllo THEN
istruzione
END IF
IF... THEN... ELSE
Questo, è molto simile alla precedente struttura di controllo, ma in più ha
l'opzione che indica l'azione nel caso in cui l'istruzione è falsa.
IF controllo THEN
istruzione
ELSE
istruzione
END IF
SELECT CASE
Questo serve nel caso le opzioni siano più di tre o quattro.
SELECT CASE espressione
CASE val1
istruzione
CASE val2
istruzione
CASE val3
istruzione
END SELECT
CICLO
Ora seguono le strutture di controllo che seguono la logica ciclica, ovvero
ripetono l'esecuzione di uno stesso codice più volte... dipende dall'input dato
dall'utente o da altro...
DO WHILE... LOOP
Fa parte del ciclo DO... LOOP e questo indica che deve "girare" fino a
quando l'istruzione diventa falsa.
DO WHILE controllo
istruzione
LOOP
DO UNTIL... LOOP
Al contrario, questo ciclo si blocca solo quando si incontra il valore TRUE.
DO UNTILE controllo
istruzione
LOOP
ISTRUZIONI
WHILE... WEND
E' la stessa cosa di DO WHILE... LOOP
WHILE controllo
istruzione
WEND
FOR... NEXT
Questo tipo di ciclo viene utilizzato nel caso già conosciamo il numero di
volte che deve "girare"
FOR var = valoreiniziale TO valorefinale STEP valoredaincrementare
istruzione
NEXT
CICLI INFINITI
Come dice il nome tali cicli sono infiniti e quindi l'esecuzione non finisce
mai... come è logico capire tale ciclo è sconsigliato... tranne in pochi e
rari casi...
CICLO ANNIDATO
I cicli annidati non sono altro che cicli all'interno di altri cicli.
ASP: Gli oggetti
Cosa sono e a cosa servono
Gli OGGETTI permettono di aumentare il livello di astrazione delle pagine.
Ovvero con un unico comando possiamo dare tutta una serie di istruzioni. In
questo modo risparmiamo tempo nella scrittura del codice e migliora anche la
leggibilità dello stesso codice.
METODI
Sono le operazioni che si possono eseguire con gli oggetti.
PROPRIETA'
Descrivono le "caratteristiche" degli oggetti.
Gli oggetti predefiniti in ASP sono 7:
- Application
- ASPerror
- ObjectContext
- Response
- Request
- Server
- Session
Vediamo sommariamente il loro utilizzo:
APPLICATION
Serve per utilizzare le stesse informazioni da più client (utenti),
ovvero aiuta a mantenere lo stato.
Può memorizzare un numero elevato di dati di qualsiasi tipo, e ciascuna
variabile memorizzata prende il nome di: "variabile dell'applicazione"
o "variabili globali".
Codice
Scrivere dati:
Application("nomevariabile") = valore
Leggere dati:
variabile = Application("nomevariabile")
Nel caso si voglia bloccare le modifiche dell'oggetto nel caso un utente le
modifiche, si può utilizzare Lock, così:
Application.Lock
Application("nomevariabile") = valore
Application.UnLock
Per leggere le variabili dell'oggetto APPLICATION,
si può utilizzare StatObjects o Contents,
in questo modo:
Application.Contents.Count
Problemi
L'utilizzo dell'oggetto Application comporta un notevole spreco di risorse del
Server Web, quindi è sempre bene non memorizzare oggetti e inserire solo le
variabili necessarie. Quindi in linea generale meno
oggetti\variabili inseriamo e meno ne risentirà il nostro server web
ASP: I cookies
I cookies è uno dei tanti mezzi utilizzati per memorizzare i dati. Abbiamo già
visto l’oggetto Session (che memorizza i dati in una sessione, una per ogni
utente) e l’oggetto Application (che memorizza dati per tutti quanti).
Riprendendo l’analisi dei cookies questi sono molto utili per memorizzare
quantità di dati per il corto\medio\lungo tempo in quanto le informazioni sono
memorizzate in un piccolo file di testo memorizzato nel computer client
(utente).
Alcuni reputano l’utilizzo di tali cookies come una violazione della privacy,
e in riguardo vi rimandiamo ai nostri
articoli.
Le sua applicazioni sono innumerevoli e vengono spesso utilizzati per
l’identificazione automatica (Logon) degli utenti (vedi nostro forum)
Leggere un Cookie
La
sintassi è la seguente:
Request.Cookies(nomecookies)(chiave)
Quindi, ecco come memorizzare un cookie in una variabile:
nome =
Request.Cookies(“datiutente”)(“nome”)
Per vedere se esiste un cookie o se ha delle chiavi memorizzate, si usa la
proprietà HasKeys, in questo modo:
Request.Cookies(“datiutente”).HasKeys
In questo caso restituirà il valore True (vero) in quanto contiene la chiave
NOME, mentre se era vuoto avrebbe restituito il valore FALSE (falso).
Infine per vedere quanti e quali cookies sono memorizzati sul client, basta
utilizzare:
Request.ServerVariables(“cookie”)
Scrivere un Cookie
La
sintassi è la seguente:
Response.Cookies(nomecookies)(chiave)
= valore
All’interno possiamo memorizzare stringhe, numeri, valori booleani, date e
valute.
E’ sempre poi consigliato utilizzare la proprietà Expires che indica il
tempo, il giorno in cui dovrà scadere e quindi essere cancellato il cookie. La
data si potrà indicare in differenti modi:
“03/06/2001”
Cdate(“03/06/2001”)
#03 Maggio 2001#
DateSerial(2001, 6, 3)
questo per indicare un giorno preciso, ma se vogliamo che scada tra 30 giorni?
Basterà indicare date() + 30
La sintassi quindi è:
Response.Cookies(“nomecookie”).Expires
= date() + 30
Impostando invece la data ad un giorno già passato si indicherà al client che
il cookies, alla chiusura del browser dovrà cancellare il cookie salvato.
Vi sono infine altre 3 proprietà da nominare:
Domain: permette di inserire un nome differente di dominio. Di default indica il
dominio del nostro sito.
Path: indica da quali pagina di una determinata cartella possono essere letti i
cookie.
Secure: se impostato a True il cookies sarà inviato per mezzo di un protocollo
sicuro (HTTPS)
Path e Domain sono comunque sconsigliati in quanto se utilizzati in modo
improprio non permettono il corretto utilizzo\lettura del cookie.
ASP: Leggere i file
Spesso ci capita di leggere dati memorizzati in file di testo e visualizzarli in
una pagina asp.
L'operazione è molto semplice.
Prima di tutto dovremo aprire il file, in questo modo:
strPath = Server.Mappath("file.txt")
Set objFileSy = Server.CreateObject("Scripting.FileSystemObject")
Set objApriFile = objFileSy.OpenTextFile(strPath, 1)
Poi utilizziamo uno o più metodi (sono in tutto 3) forniteci dall'oggetto Text
Stream
Read(n) Restituisce i primi n caratteri della riga corrispondente
ReadLine Restituisce tutti i caratteri della riga corrispondente
ReadAll Restituisce tutti i caratteri di tutto il file
Quindi per visualizzare i primi 5 caratteri della prima riga, basta digitare:
Response.Write objApriFile.Read(5)
mentre per visualizzare tutta la riga:
Response.Write objApriFile.ReadLine
infine per visualizzare tutto il documento:
Response.Write objApriFile.ReadAll
Come è facile comprendere spesso non si conosce il numero
effettivo di righe all'interno di un file... quindi utilizzare semplice ReadLine
non basta e utilizzare ReadAll, invece, provoca un grande spreco di memoria...
ReadLine non basta in quanto se prova a leggere una riga che non esiste provoca
un errore... questo capita se prevediamo di leggere le prime 10 righe di un
file, quando in realtà ce ne sono appena 9.
Quindi utilizziamo un'altra proprietà dell'oggetto Text Stream: AtEndOfStream.
Come valori ha True e False (vero e falso), true quando si trova
alla fine del file.
Quindi con un Do While Not .... possiamo leggere tutto il file, riga per riga,
sicuri di non provocare errori... la sintassi completa:
Do While Not objApriFile.AdEndofStream
Response.Write objApriFile.ReadLine
Loop
Quindi la sintassi per leggere un file di testo è la seguente:
strPath = Server.Mappath("file.txt")
Set objFileSy = Server.CreateObject("Scripting.FileSystemObject")
Set objApriFile = objFileSy.OpenTextFile(strPath, 1)
Do While Not objApriFile.AdEndofStream
Response.Write objApriFile.ReadLine
Loop
objApriFile.close
Set objApriFile = Nothing
Set objFileSy = Nothing
ASP: Scrivere i file
Per scrivere file esistono 2 modi: scrivere file nuovi o file già esistenti,
in quest'ultimo caso è possibile decidere se scrivere
cancellando il contenuto già presente o aggiungerlo alla fine...
Per scrivere una riga si utilizza il metodo Write, in questo modo:
objTextStream.Write("testo da inserire")
mentre utilizzando WriteLine si scriverà una riga e si andrà a capo:
objTextStream.WriteLine("testo da inserire")
Infine per fare n ritorni a capo, basta utilizzare WriteBlankLines(n):
objTextStream.WriteBlankLines(n)
Ecco un codice completo per scrivere del testo all'interno di un file:
strPath = Server.Mappath("file.txt")
Set objFileSy = Server.CreateObject("Scripting.FileSystemObject")
Set objApriFile = objFileSy.OpenTextFile(strPath, ForWriting)
objApriFile.Write("Ciao")
objApriFile.WriteLine(" Matteo")
objApriFile.WriteBlankLines(2)
objApriFile.Write("sono Lorenzo")
objApriFile.close
Set objApriFile = Nothing
Set objFileSy = Nothing
Come già detto è possibile scrivere un file esistente da zero cancellando i
vecchi dati o aggiungendo semplicemente nuove righe a quelle già presenti.
Nello script qui sopra analizzato il codice viene riscritto da zero, in quanto
abbiamo impostato ForWriting, scegliendo invece ForAppending avremo
semplicemente aggiunto le righe:
Ciao Matteo
sono Lorenzo
a quelle già esistenti.
ASP: Includere file
Prima di entrare nel vivo della programmazione Asp applicata ai database,
parliamo di come includere dei file all'interno di pagine asp.
Gli
#include, così si chiamano, servono soprattutto per inserire operazioni
ripetitive, colonne, la parte superiore e\o inferiore di un sito web. Hanno un
po' gli stessi fini dei frames, solo sono più potenti e vanno a finire come
codice stesso della pagina, tanto che al client non risulteranno mai pagine
differenti.
Esempio pagina include.asp
<html>
<head>
<title>Prova Inclusione 1</title>
</head>
<body>
<!--#include file="superiore.asp"-->
testo testo testo
<!--#include file="inferiore.inc"-->
All'interno della pagina superiore.asp
<p><font size="1">Benvenuto
su WMP.org</font></p>
All'interno della pagina inferiore.inc
<p>Fine
Pagina</p></body>
</html>
Quando carico la pagina include.asp il codice sorgente (html) sarà:
<html>
<head>
<title>Prova Inclusione 1</title>
</head>
<body>
<p><font size="1">Benvenuto su WMP.org</font></p>
testo testo testo
<p>Fine Pagina</p></body>
</html>
Includere i file
E' possibile
attraverso 2 metodi.
Supponiamo che la pagina che "richiede l'inclusione" del file
superiore.inc si trova nella root e la pagina da includere (superiore.inc) si
trova anch'essa nella root.
Virtual Keyword
<!--#include virtual ="/superiore.inc"-->
Permette
di includere il file superiore.inc in qualsiasi file asp, in qualsiasi directory
e sottodirectory mettendo davanti al nome del file semplicemente /
File Keyword
<!--#include file ="superiore.inc"-->
Permette
di includere il file superiore.inc in qualsiasi file asp, in qualsiasi directory
e sottodirectory mettendo davanti al nome del file il percorso relativo del
file.
Importante
E'
possibile includere file .asp e .inc (i file .inc sono realizzabili
semplicemente con il Blocco Note). L'unica differenza è che i file .inc possono
essere aperti ed è quindi possibile visualizzare il codice sorgente, mentre per
il file asp non è possibile.
Infine
è bene ricordare che il codice Asp all'interno dei file inclusi viene eseguito.
ASP: Introduzione ai database
Un mezzo molto comodo, utile e utilizzato per memorizzare i dati in modo
permanente è il database. Infatti Session memorizza i dati solo quando l'utente
si trova all'interno del sito (quando esce i dati vengono cancellati),
Application non è adatto per memorizzare dati personali per ovvi motivi di
carico del server e infine i cookies possono scadere, essere cancellati
accidentalmente o appositamente o addirittura disattivati e così
inutilizzabili.
Il
database è un grande archivio in cui vengono memorizzati dati di qualsiasi
genere e grandezza.
I
più utilizzati (come ne abbiamo parlato nella guida di SQL)
sono quelli MS Access e Sql Server, Oracle, Informix, Sybase, DB2,... ma vedremo
che i più diffusi sono quelli Access, in quanto il software è relativamente
economico, potente (ci permette di fare tutte le operazioni possibili) e
supportato dalla maggior parte dei provider.
Quindi
questa guida farà riferimento ai database MS Access, ma il funzionamento è più
o meno uguale per tutti.
Per
realizzare database di tale tipo abbiamo 2 metodi:
- Utilizzare Microsoft Access (che si trova nel pacchetto MS Office)
- Realizzarlo attraverso una pagina ASP (utilizzando SQL)
COME E' IMPOSTATO UN DATABASE
I
database possono contenere una o più tabelle che al loro interno contengono
colonne e righe che formano le celle (o records).
Le
colonne sono le categorie (sono quelle che contengono determinano i dati) mentre
le righe permettono di inserire tutti i dati relativi ad un oggetto. Ecco un
esempio di database:
|
ID
|
Nome
|
Cognome
|
Eta
|
Paese
|
|
1 |
Lorenzo |
Pascucci |
17 |
Oriolo Romano |
|
2 |
Marcello |
Tansini |
22 |
Sesto S. Giovanni
|
Tutto
ciò è una tabella che prenderà un nome, in questo esempio DATI. All'interno
di un database si possono trovare anche altre tabelle.
| pillitteri
spin tuttisiti nino pillitteri cd cd rom, server nt reti linguaggio C++ cd
audio marketing web design, http, servers, web promotion web advertising web
training realizzazione siti internet creazione pagine web realizzazione siti
negozio virtuale progettazione siti siti internet siti web creazione siti realizzazione siti banner gratuiti aggiornamento siti business Internet promozione online news online, Internet marketing, web hosting web marketing realizzazioni multimediali multimedia multimediale presentazioni aziendali commercio elettronico e-commerce transazioni on line carrello consulenza gratuita cd-rom multimediali promozione siti registrazione domini reti aziendali intranet tuttisiti web pagine web realizzazione siti internetaziende online sito privato pubblicità, spazi online spazio web creazione pagine web realizzazione siti web web art vacanze taormina scenografia scenografica ping tracert winipcfg test finger talk rusers, rwho crittografia crittanalisi ftp servet nt 4.0 pittura rete arte design webmaster webdesign cd cd rom attacchi noti tipi di attacchi+Trojan horsesBombs Backdoors Trap doors Probing del sistema tecniche di scanning problema sicurezza protezione dei sistemi tramite password vulnerabilità dei programmi e firewall virus worms |