Active Server Pages, ovvero ASP, è una tecnologia di casa Microsoft per la creazione di documenti Web gestibili con script lato server. Diamo vita a questa affermazione!
Un sito composto da pagine HTML pure e semplici non permette la minima interazione tra gli utenti, tanto meno permette l'interazione tra un utente ed il sito stesso. Per interazione intendo scambio di dati in tempo reale, archiviazione di dati su un database, invio di messaggi di posta elettronica o sistemi di comunicazione di varia natura.
Per fare un esempio concreto di quello che si può fare con ASP possiamo pensare ad applicazioni come un libro degli ospiti (guestbook), forum di discussione, inserimento e lettura automatica di news, chat, form mail, gestione di newsletter e mailing list, sondaggi e centinaia di altre tipologie di applicazioni che prevedono lo scambio dinamico e l'archiviazione dei dati.
Questa guida ha lo scopo di introdurre il lettore alla tecnologia e renderlo pronto ad affrontare tutorial specifici che danno per scontato determinate conoscenze di base sul linguaggio, sulla sintassi e sulla sua modalità di utilizzo. Si tratta quindi di una guida a livello base che ha però, a differenza di altre guide gratuite reperibili in rete (con tutto il rispetto), la presunzione di chiarire molti dubbi anche al lettore già smaliziato.
Allo scopo seguiremo un percorso ben preciso che parte dalla definizione dell'ambiente di sviluppo e di esecuzione dell'ASP; creeremo un primo esempio di pagina ASP in modo da capire in che modo ASP lavora con l'HTML e con altri linguaggi per il Web. Vedremo quali linguaggi è possibile utilizzare per implementare script ASP, spiegando i pro ed i contro di ciascuno. Affronteremo poi gli elementi base della tecnologia e la loro sintassi pratica, fino ad affrontare elementi come l'interfaccia con i database e con altri applicativi.
Un normale file HTML è un file di testo creato rinominando un file di testo da nome_file.txt a nome_file.htm o nome_file.html ed è possibile visualizzarlo direttamente nel proprio browser con un doppio click sulla sua icona.
Un file ASP può essere tranquillamente creato rinominando un file di testo in nome_file.asp (dove .asp è, naturalmente, l'estensione di un file ASP) ma...
In questa lezione vedremo come creare la nostra prima pagina ASP e come far "convivere" il normale codice HTML con le parti dinamiche scritte in Classic ASP.
Posizioniamoci sul nostro server Web PWS o IIS che sia, ovvero nella cartella
C:Inetpubwwwroot
e creiamo la cartella mrw_corso_asp in cui inseriremo tutti gli esempi della guida. All'interno di questa cartella creiamo il file prima_pag.asp...
Al contrario di altri linguaggi di scripting lato server come PHP, JSP ed in qualche modo anche dello stesso nuovo ASP.NET, l'ASP tradizionale non dispone di un linguaggio vero e proprio, ma utilizza, potenzialmente, 3 differenti linguaggi per implementare i propri script:
VBScript esemplificazione del noto linguaggio di programmazione Visual Basic, nasce come linguaggio di scripting lato client ed è...
Grazie alle estensioni gestite sia dal PWS che da IIS, ASP dispone della possibilità si sfruttare la tecnologia Server Side Include (da ora in poi SSI) ovvero di offrire la possibilità di includere, appunto, una pagina unica all'interno di un'altra pagina.
Per chi conosce i CSS e sa come includere un file *.css in una pagina HTML per sfruttare un...
A prescindere dal linguaggio di scripting utilizzato, sia VBScript che JScript che PerlScript, ASP dispone nativamente di cinque oggetti, il cui scopo sarà dettagliato nei prossimi altrettanti capitoli.
Questi oggetti sono i membri di una famiglia chiamata built-in. Di seguito un elenco dei cinque oggetti:
Response permette di inviare degli output dal server al client, come un messaggio scritto a video,...
L'oggetto built-in Response permette di inviare degli output dal server al client, come un messaggio scritto a video, un redirect da una pagina all'altra, specificare particolari intestazioni per la gestione della cache, ed altro.
Nei capitoli scorsi abbiamo visto come scrivere a video su una sola riga di codice un messaggio testuale, una variabile o come restituire in forma testuale...
L'oggetto built-in Request permette di recuperare degli input da parte dell'utente o di recuperare particolari variabili del server, dette d'ambiente.
Iniziamo a vedere com'è possibile recuperare dati attraverso l'invio di un modulo HTML. L'invio di dati attraverso un form prevede i metodi GET e POST che presuppongono un metodo di recupero differente:
Metodo di invioMetodo di recuperoGETRequest.QueryStringPOSTRequest.Form
Create nella directory di prova...
L'oggetto built-in Server permette di gestire alcuni processi specifici del server Web su cui è in esecuzione una pagina, un sito o un'intera applicazione Web.
Un esempio di utilizzo dell'oggetto Server è quello della collezione CreateObject che permette di creare una nuova istanza di un oggetto ActiveX (Rif. capitolo 4) ad esempio:
<%
Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
%>
che apre una nuova istanza...
L'oggetto built-in Session permette il passaggio di dati e di variaili tra pagine, senza far morire il dato o la variabile in questione al termine del suo ciclo di visibilità; le applicazioni più importanti che si possono gestire con quest'oggetto sono le aree di accesso riservato ed i carrelli della spesa per il commercio elettronico.
In sostanza una sessione è...
L'oggetto built-in Application è simile a Session ma mentre una variabile di sessione ha un ciclo di vita che si limita al singolo client o a tanti singoli client che hanno le loro sessioni, le variabili di applicazione permettono di condividere univocamente un dato tra tutti i client connessi ad un'applicazione; l'applicazione che più si addice all'utilizzo di questo...
Il file Global.asa è un file fondamentale per la gestione di un'applicazione ASP (Active Server Pages). Questo tipo di applicazione è costituita dall'insieme dei file contenuti in una directory virtuale del server Web.
A differenza di un sito Web tradizionale, un'applicazione ASP è in grado di mantenere informazioni di stato, cioè informazioni condivise tra le pagine, superando l'assenza di stato...
Il File System altro non è che un componente presente in ogni computer che permette di creare, modificare, rinominare, cancellare, file e cartelle. Insomma, senza il File System non esisterebbe il concetto di computer e, per certi versi, nemmeno il concetto di informatica.
ASP dispone della libreria Scripting.FileSystemObject che permette, mediante un'applicazione Web, di gestire i contenuti del server Web...
Una delle maggiori potenzialità offerte da ASP e dai linguaggi di scripting lato server in generale (ASP.NET, PHP, JSP, CGI, ecc...) è quella di interagire con un database, ovvero con una fonte di dati strutturata che rispetti gli standard del linguaggio SQL.
I database con i quali ASP può interagire sono Ms Access ed Ms SQL Server, ovvero database di...
Gli elementi di base di un qualsiasi linguaggio di programmazione o di scripting sono le variabili, le costanti e gli operatori. Vediamo come funzionano questi elementi in VBScript.
Le variabili sono delle locazioni di memoria virtuali dove il programmatore decide di memorizzare dei valori soggetti a cambiamenti.
Si dichiarano con la parola chiave Dim e vanno valorizzate su una riga differente...
Tutti i programmi, compresi quelli scritti in ASP ovviamente, sono soggetti a continui controlli nel codice da parte dello sviluppatore per eseguire operazioni differenti in funzione di eventi naturali, come il trascorrere del tempo, o di azioni compiute dall'utente.
VBscript utilizza due costrutti, ovvero If - Then - Else ed il Select Case, entrambi molto semplici e funzionali, ma il...
In qualsiasi programma, come in ASP, è necessario disporre della facoltà di ripetere una o una serie di istruzioni più volte; il caso più concreto di ripetizione, o iterazione dei dati, viene attraverso i cosiddetti cicli, e sono le estrazioni di dati dai database.
Il VBScript mette a disposizione due principali strutture di iterazione, ovvero il ciclo For ed il...
Gli array sono variabili a più livelli che incapsulano una serie di dati dello stesso tipo identificabili con un item numerico.
Un classico esempio da manuale è l'elenco dei giorni della settimana, i quali possono dover essere reperiti singolarmente senza bisogno di memorizzarli in differenti locazioni di memoria ma in un'unica.
Vediamo un esempio di codice
<%
Dim settimana(7)
...
Le funzioni sono elementi madre di un linguaggio che contengono le routine che dovranno essere eseguite con tanto di controlli condizionali, cicli, e cosi via.
In ASP, essendo un linguaggio procedurale che non risponde direttamente agli eventi (click, mouseover, etc...) non c'è bisogno di usare funzioni per eseguire dei comandi, dato che gli eventi, sul Web, sono associabili alle funzioni...
La gestione dinamica delle date è un aspetto molto importante di un linguaggio di programmazione, ed il VBScript mette a disposizione molte utili, semplici ed efficaci funzioni per la loro gestione.
Iniziamo dalla restituzione della data e dell'ora completa con la funzione Now
<%=Now()%>
Restituisce 20/03/2006 15.42.43.
Vediamo la sola gestione della data con la funzione Date
<%=Date()%>
Restituisce 20/03/2006.
Proseguiamo con la funzione per la...
Anche la gestione delle stringhe, oltre a quella delle date, riveste un ruolo fondamentale in un linguaggio di programmazione.
VBScript mette a disposizione le funzioni che mettono a disposizione un po tutti i linguaggi, dato che le esigenze di manipolazione, alla fine, sono sempre le stesse, ma sono molto comode e semplici da utilizzare.
Vediamo le principali e più utilizzate funzioni...
Nel capitolo introduttivo di questa guida abbiamo accennato alla dinamicità ed all'interattività che ASP offre agli utenti attraverso, soprattutto, la trasmissione dei dati, cosa che avviene principalmente attraverso i moduli HTML.
In questa sede non ci occuperemo ei moduli HTML in se e per se perchè la loro conoscenza si da per scontata. Per maggiori informazioni a riguardo rimando l'utente...
Abbiamo a cuore la tua privacy
Noi e i nostri partner archiviamo e/o accediamo a informazioni su un dispositivo. Cookie, identificatori del dispositivo o analoghi identificatori online (ad es. identificatori basati sull’accesso, identificatori assegnati casualmente, identificatori basati sulla rete) insieme ad altre informazioni (ad es. tipo di browser e informazioni sul browser, lingua, dimensioni dello schermo, tecnologie supportate, ecc.) possono essere archiviati sul o letti dal dispositivo dell’utente per riconoscerlo ogni volta che l’utente si connette a un’app o a un sito web, per una o più finalità qui presentate.
Con il tuo consenso, i tuoi dati possono essere utilizzati per quanto segue: Pubblicità e contenuti personalizzati, misurazione delle prestazioni dei contenuti e degli annunci, ricerche sul pubblico, sviluppo di servizi; Dati di geolocalizzazione precisi e identificazione attraverso la scansione del dispositivo.
I tuoi dati personali verranno trattati e le informazioni dal tuo dispositivo (cookie, identificatori univoci e altri dati del dispositivo) possono essere memorizzate, consultate e condivise con 179 partner, o utilizzate specificamente da questo sito o questa app. Alcuni fornitori potrebbero trattare i tuoi dati personali sulla base dell'interesse legittimo, al quale puoi opporti gestendo le tue opzioni qui sotto. Puoi revocare il tuo consenso in qualsiasi momento facendo clic sul link delle impostazioni sulla privacy situato in fondo alla pagina.
Alcuni partner non chiedono il tuo consenso al trattamento dei tuoi dati, ma fanno affidamento sul loro legittimo interesse commerciale. Guarda il nostro elenco di partner per conoscere gli scopi per cui credono di avere un interesse legittimo e come puoi opporti.
Questi sono i nostri partner pubblicitari che partecipano al Framework di trasparenza e consenso dello IAB, creato per garantire un uso trasparente e corretto dei dati.
Questi fornitori sono registrati su Google, ma non nel Transparency & Consent Framework di IAB Europe.
{"b_dec":{"def":"Rifiuta e chiudi","res":"Rifiuta e chiudi"},"priclt":" \u003Cdiv class=\u0022cl-consent-settings cl-consent-settings--is-hidden\u0022\u003E \u003Cstyle\u003E .cl-consent-settings { position: fixed; left: 16px; bottom: 28px; z-index: 100; transition: all 0.15s ease-in-out; transform: translateY(0); } .cl-consent-settings--is-hidden { transform: translateY(70px); opacity: 0; } .cl-consent-settings__hint { border-radius: 4px; background: #282A3C; box-shadow: 0px 4px 24px 0px rgba(0, 0, 0, 0.15); color: #FFFCF2; position: absolute; right: -195px; top: 0; bottom: 0; margin: auto; height: 40px; width: 175px; display: flex; align-items: center; justify-content: center; padding: 4px 12px; font-size: 12px; font-weight: 400; line-height: 16px; cursor: default; user-select: none; transition: transform 0.3s ease, opacity 0.3s ease; transform: translateX(0); opacity: 0; pointer-events: none; z-index: -1; } .cl-consent-settings__hint::after { content: \u0022\u0022; position: absolute; left: -16px; top: 0; bottom: 0; margin: auto; width: 0; height: 0; border: 0 solid transparent; border-top-width: 12px; border-bottom-width: 12px; border-right: 16px solid #282A3C; } .cl-consent-settings__btn { width: 42px; height: 42px; border-radius: 50%; display: flex; align-items: center; justify-content: center; padding: 0; border: none; background-color: #4B81E8; background-image: url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022); background-position: center center; background-size: 30px 30px; background-repeat: no-repeat; box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.35); z-index: 70; position: relative; text-decoration: none; } .cl-consent-settings__btn:hover + .cl-consent-settings__hint { transform: translateX(22px); pointer-events: all; opacity: 1; } .cl-consent-settings__user { width: 18px; height: 18px; border-radius: 50%; padding: 0; border: 1px solid #ffffff; background-color: #00AD98; background-image: url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 viewBox=\u00270 0 10 11\u0027 width=\u002710\u0027 height=\u002711\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 stroke=\u0027%23fff\u0027 stroke-width=\u0027.1\u0027 d=\u0027M6.858 6.262A3.3 3.3 0 0 0 8.2 3.597C8.2 1.796 6.764.325 5 .325s-3.2 1.47-3.2 3.272c0 1.094.53 2.07 1.342 2.665A4.67 4.67 0 0 0 .45 10.5v.05h1v-.05c0-2.012 1.585-3.632 3.55-3.632s3.55 1.62 3.55 3.632v.05h1v-.05a4.67 4.67 0 0 0-2.692-4.238ZM5 1.345c1.22 0 2.2 1.002 2.2 2.252s-.98 2.25-2.2 2.25-2.2-1-2.2-2.25.98-2.252 2.2-2.252Z\u0027\/%3E%3C\/svg%3E\u0022); background-position: center center; background-size: 9px 10px; background-repeat: no-repeat; z-index: 75; position: absolute; top: -2px; right: -8px; text-decoration: none; visibility: hidden; } \u003C\/style\u003E \u003Cbutton type=\u0022button\u0022 class=\u0022cl-consent-settings__btn\u0022 onclick=\u0022if(window.__lxG__consent__ !== undefined) {window.__lxG__consent__.showConsent()} else {alert(\u0027This function only for users from European Economic Area (EEA)\u0027)}; return false\u0022\u003E \u003Cspan class=\u0022cl-consent-settings__user\u0022\u003E\u003C\/span\u003E \u003C\/button\u003E \u003Cdiv class=\u0022cl-consent-settings__hint\u0022\u003EPrivacy and cookie settings\u003C\/div\u003E \u003C\/div\u003E","pricds":"show_in_the_footer","vcnt":179,"_t":{"titles":"Purposes|Purposes (Legitimate Interest)|Features|Special Features|Special Purposes|Scopi|Scopi (Interesse Legittimo)|Caratteristiche|Caratteristiche Speciali|Scopi Speciali","sp3_ret":"Le scelte che fai riguardo agli scopi e alle entità elencati in questo avviso sono salvate per un massimo di %sp3_retention% nei seguenti cookie e variabili di archiviazione locale","ill_pp_ttl":"Esempi di Utilizzo","vndr_dtls_con":"Trattamento dei dati basato sul tuo consenso","vndr_dtls_li":"Trattamento dei dati basato sul legittimo interesse","vndr_dtls_fi":"Trattamento dei dati basato sul tuo consenso o interesse legittimo","cks_strg_dur":"dura %DURATION%","cks_strg_ses":"per la sessione attuale","cks_strg_not_used":"non utilizzato","cks_strg_dur_s":"sec","cks_strg_dur_i":"min","cks_strg_dur_h":"ora(e)","cks_strg_dur_d":"giorno(i)","cks_strg_dur_m":"mese(i)","cks_strg_dur_y":"anno(i)","vr_dts_purl":"URL della politica sulla privacy","vr_dts_dsurl":"URL di divulgazione dell\u0027archiviazione del dispositivo","vr_dts_dsurl_h":"Informazioni aggiuntive su archiviazione e operazioni","vr_dts_clmurl":"URL della richiesta di interessi legittimi","vr_dts_datac":"Categorie di dati","vr_dts_datac_h":"Categorie di dati raccolti in relazione agli scopi","vr_dts_stdret":"Conservazione dei dati standard (giorni)","vr_dts_stdret_h":"Il periodo standard è utilizzato a meno che non sia dichiarato un altro periodo per scopi specifici.","vr_dts_ret":"Conservazione dei dati (giorni)","vr_dts_usecks":"Usa i cookie","vr_dts_usecks_h":"Indica se il fornitore utilizza l\u0027archiviazione dei cookie (sessione o altro). SÌ indica che l\u0027archiviazione dei cookie è utilizzata. NO - l\u0027archiviazione dei cookie non è utilizzata.","vr_dts_usecksy":"Sì","vr_dts_usecksn":"No","vr_dts_cksage":"Età massima del cookie","vr_dts_cksage_h":"Il numero di secondi che rappresenta la durata potenziale più lunga per l\u0027archiviazione dei cookie su un dispositivo. Se un fornitore utilizza più cookie con durate diverse, rappresenta il cookie con la durata più lunga. Un numero negativo o 0 indica l\u0027archiviazione della sessione simile alla specifica Set-Cookie.","vr_dts_cksref":"Aggiornamento cookie","vr_dts_cksref_h":"Indica se i cookie vengono aggiornati dopo essere stati inizialmente impostati. SÌ - indica che il fornitore può aggiornare i cookie. NO - indica che il fornitore non aggiorna i cookie ogni volta che il browser viene ricaricato.","vr_dts_noncks":"Utilizza l\u0027accesso senza cookie","vr_dts_noncks_h":"Indica l\u0027uso da parte del fornitore di archiviazione non-cookie e accesso alle informazioni già memorizzate sul dispositivo di un utente. SÌ - indica che l\u0027accesso senza cookie è utilizzato. NO - indica che l\u0027archiviazione e l\u0027accesso senza cookie alle informazioni già memorizzate sul dispositivo di un utente non vengono utilizzati.","vr_dts_hgetl":"Limite della lunghezza della richiesta HTTP GET (Kbyte)","vr_dts_hgetl_h":"Dimensione massima della richiesta GET in kilobyte per aiutare a diagnosticare i problemi con il passaggio della stringa TC e limitare le stringhe di dimensioni eccessive.","vr_dts_addtnl":"Dati aggiuntivi","vr_dts_legaddr":"Indirizzo completo dell\u0027entità legale","vr_dts_b2bcont":"Dettagli di contatto B2B","vr_dts_terscp":"Ambito territoriale","vr_dts_terscp_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_env":"Ambiente","vr_dts_env_h":"Indica gli ambienti in cui il venditore opera","vr_dts_tserv":"Tipo di servizi","vr_dts_tserv_h":"Indica il tipo di servizi offerti dal venditore","vr_dts_trnsfout":"Trasferimenti internazionali fuori dall\u0027UE\/SEE","vr_dts_trnsfout_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_trnsfmch":"Meccanismi di trasferimento internazionale"}}