I file che compongono un sito web dinamico partecipano tutti alla stessa "applicazione". ColdFusion consente allo sviluppatore di estendere questo concetto grazie ad una serie di funzionalità molto potenti, permettendo ad esempio di condividere variabili CFML all'interno delle varie pagine oppure di eseguire del codice ogni volta che viene richiesta una pagina .cfm.
I file Application.cfm e OnRequestEnd.cfm
Alla base di un'applicazione sta il file "Application.cfm": prima di elaborare una pagina CFML, ColdFusion controlla se nella stessa cartella sul server è presente un file Application.cfm. Se non c'è, controlla nella cartella superiore, e così via fino a quando non ci sono altre cartelle. Il file Application.cfm viene eseguito prima di ogni pagina CFML esattamente come se la prima riga di quest'ultima contenesse un tag <cfinclude template="Application.cfm">.
1. Elimina da tutti i file .cfm che abbiamo realizzato in precedenza la riga <cfinclude template="header.cfm"> (se hai Dreamweaver, puoi fare in fretta utilizzando il comando "trova & Sostituisci").
2. Crea un nuovo file Application.cfm con il seguente codice:
<!--- Visualizza l'intestazione del sito --->.
<cfinclude template="header.cfm">
e salvalo nella cartella "discoteca". Come puoi vedere, tutti i file ora includono il file header.cfm.
(Il nome del file Application.cfm deve avere sempre la "A" maiuscola, poiché i sistemi non Windows distinguono le minuscole dalle maiuscole nei nomi di file).
In ColdFusion il file "OnRequestEnd.cfm" viene eseguito alla fine di ogni pagina CFML.
3. Analogamente, elimina da tutti i file .cfm che abbiamo realizzato in precedenza la riga <cfinclude template="footer.cfm">
4. Crea un nuovo file OnRequestEnd.cfm nella cartella discoteca con il seguente codice:
<!--- Visualizza il piede della pagina --->.
<cfinclude template="footer.cfm">
(Anche il nome del file OnRequestEnd.cfm deve rispettare queste maiuscole).
Condividere variabili in un'applicazione
Quando creiamo delle variabili con <cfset> o <cfparam>, la "vita" di esse è limitata alla pagina in cui vengono dichiarate. Significa che il loro contenuto non sarà più disponibile all'interno delle altre pagine CFML. In ColdFusion possiamo utilizzare quattro tipi di variabili differenti per risolvere questo problema.
Variabili "Application": sono tipi di variabili che risiedono nella memoria del server. La nostra applicazione ColdFusion potrà accedere al contenuto di esse da qualsiasi pagina CFML.
Cookie: sono dei file che il browser scrive sul computer del visitatore per conservare delle informazioni. Possiamo inserire il contenuto delle variabili in un cookie e accedere ad esso quando vogliamo, finché il cookie non è eliminato dal client.
Variabili "Client": le variabili di tipo client sono simili ai cookie, ma anziché essere memorizzate in un file sul client sono salvate sul server (in un database o nel Registro di Windows).
Variabili di sessione: il contenuto di questo tipo di variabili viene memorizzato nella RAM del server, e quindi possono conservare i dati solo temporaneamente.
Le variabili "Cookie", "Client" e di sessione sono definite o contengono informazioni differenti per ciascun browser che visita il sito. Cambiano cioè da utente ad utente, e per questo motivo sono utilizzate solamente per condividere all'interno di una stessa applicazione informazioni di ciascun visitatore.
Le variabili di tipo "Application", invece, possono essere utilizzate per memorizzare informazioni relative alla singola applicazione poiché condivise da tutti i visitatori.
Il tag <cfapplication> e variabili di tipo Application
Grazie al tag <cfapplication> possiamo 1) utilizzare le variabili di tipo "Application"; 2) attivare o disattivare l'utilizzo di variabili di tipo "Client"; 3) attivare le variabili di tipo "Session". Ha senso quindi utilizzare il tag <cfapplication> all'inizio del file Application.cfm.
1 .Inserisci la seguente riga all'inizio del file Application.cfm:
<cfapplication name="SitoDiscoteca" sessionManagement="Yes">
Il tag <cfapplication> richiede come obbligatorio l'attributo "name", il cui scopo è quello di dare un nome all'applicazione ColdFusion che virtualmente stiamo creando con questo tag. L'attributo sessionManagement="Yes" predispone ColdFusion ad utilizzare variabili di sessione nel nostro sito.
Un utilizzo comune delle variabili di tipo Application è quello di memorizzare in una di esse il data source name che utilizziamo nei tag <cfquery>. Questa informazione, infatti, è generalmente comune in tutto il nostro sito e può essere comodo tenerla in una variabile Application per evitare di cambiare il datasource di ogni <cfquery> nel caso ce ne fosse bisogno.
2. Inserisci dopo il tag <cfapplication> la dichiarazione di una variabile di tipo Application che contenga il nome del datasource:
<cfapplication name="SitoDiscoteca" sessionManagement="Yes">
<cfset application.DSN = "discoteca">
Le variabili di tipo "Application" hanno come scope "application". Ora "application.DSN" sarà disponibile in tutto il sito.
3. Sostituisci a tutti gli attributi datasource="discoteca" il nuovo valore datasource="#application.DSN#". (questa operazione sarà semplice utilizzando una funzione tipo trova & Sostituisci di Dreamweaver). Il <cfquery> finale dovrà essere simile a:
<cfquery name="nome_della_query" datasource="#application.DSN#">.