Introduzione a ColdFusion
ELEMENTI BASE
Introduzione
Il codice ColdFusion MX 7 viene compilato in bytecode Java, rendendolo estremamente portabile, flessibile e potente. ColdFusion è composto principalmente di due parti:
- ColdFusion Application Server
- ColdFusion Markup Language (CFML)
Quando il browser richiede una pagina che termina con estensione .cfm, la richiesta viene inoltrata ad un web server, il quale rigira la richiesta all'Application Server di ColdFusion. L'application server nel processare la pagina può comunicare con il file system, un DBMS oppure con un mail server, per poi spedire la pagina web risultante al browser.
Il ColdFusion Markup Language (CFML) condivide con i parenti HTML o XML la sua struttura a tag. Una pagina ColdFusion generalmente contiene sia codice HTML che ColdFusion, così come può contenere altre tipologie di tag. I tag di ColdFusion si possono distinguere facilmente da tutti gli altri tag poiché le prime due lettere sono sempre cf
(come il tag
ad esempio).
Le variabili
ColdFusion è un linguaggio debolmente tipato, ossia non dovete specificare il tipo di dato per ogni variabile. Infatti ColdFusion determina il tipo di una variabile a runtime, ossia quando viene il momento di utilizzarla. Una metodologia comune di inizializzazione di una variabile è tramite l'uso del tag
come nell'esempio sottostante:
In ColdFusion, i nomi delle variabili:
- possono consistere di lettere, cifre, underscore ("_") e simboli del dollaro;
- NON possono iniziare con un numero;
- sono case-insensitive (ossia non c'è distinzione fra maiuscole e minuscole).
Ci sono varie tipologie di variabili in ColdFusion:
- variabili specifiche per una pagina;
- variabili di sessioni utente;
- variabili per un'intera applicazione;
- ecc.
Ogni tipologia di variabile ha uno scope (visibilità) differente, la quale determina dove e per quanto tempo una variabile esiste. Ad esempio, le variabili di sessione hanno uno scope di tipo Session e la loro esistenza è limitata alla durata della sessione e sono accessibili da ogni pagina che è parte della sessione. Le variabili specifiche per una pagina (come le variabili locali) hanno uno scope di tipo Variable.
Un prefisso viene usato per specificare lo scope di una variabile. La sintassi viene mostrata qui sotto:
SCOPE.VariableName
La seguente tabella mostra svariate tipologie di scope delle variabili e i loro prefissi. Tali prefissi non sono richiesti per tutti gli scope delle variabili. I prefissi richiesti sono in grassetto.
Scope | Prefisso | Descrizione |
---|---|---|
Locale | VARIABLES | Definito ed accessibile solo nella pagina corrente. |
CGI | CGI | Accessibile da ogni pagina. Contiene variabili di ambiente lato server. |
URL | URL | Accessibile nella pagina corrente. Contiene valori passati nella query string. |
Form | FORM | Accessibile nella pagina corrente. Contiene i valori passati attraverso una form web. |
Cookie | COOKIE | Accessibile da ogni pagina. Contiene variabili contenute nei cookie lato client. |
Client | CLIENT | Accessibile da ogni pagina. Contiene variabili create usando il prefisso Client . |
Argomenti | ARGUMENTS | Definito ed accessibile all'interno di una funzione definita dall'utente oppure di un metodo di un componente ColdFusion. |
Sessione | SESSION | Prefisso richiesto. Accessibile da ogni pagina per un singolo utente per tutta la durata della sessione client. |
Applicazione | APPLICATION | Prefisso richiesto. Accessibile da ogni pagina per tutti gli utenti finché l'applicazione non viene riavviata. |
Server | SERVER | Prefisso richiesto. Accessibile da ogni pagina inviata da un server specifico. |
Variabili di scope differenti possono avere lo stesso nome. Per esempio, una variabile locale potrebbe avere lo stesso nome di una variabile di un form. Se tale variabile viene riferita senza l'uso di un prefisso, ColdFusion avrà bisogno di sapere quale variaile usare e cercherà fra gli scope nel seguente ordine:
- Argomenti;
- Locale;
- CGI;
- URL;
- Form;
- Cookie;
- Client;
In generale, è una buona idea includere il prefisso quando ci si riferisce ad una variabile poiché questo aiuterà ad eliminare confusione (rendendo il codice più leggibile) e probabilmente renderà la processazione della pagina più veloce dal momento che ColdFusion saprà esattamente fin da subito dove cercare per la variabile in questione.
Una pagina ColdFusion è composta generalmente da una mistura di tag CFML, HTML e puro testo. ColdFusion ignorerà qualsiasi contenuto al di fuori dei tag CFML, quindi tale contenuto verrà inviato così com'è al browser.
Il tag
viene usato per dire a ColdFusion di tentare di valutare ogni variabile o espressione contenuti all'interno dei caratteri cancelletto (#). Diamo un'occhiata ad un esempio, il classico "Hello World":
Es: HelloWorld.cfm
Hello World! #VARIABLES.greeting# World!
Il codice è piuttosto semplice ed abbastanza inutile, non essendo presente aluna componente dinamica nello script. Diamo ora uno sguardo a qualcosa di più interessante.
Come ben saprete, una modalità comune di passare valori dal browser al server è appendendo tali valori alla fine di un URL dopo il punto interrogativo:
http://webucator.com/hello.cfm?greet=Hello&person=World
La parte dell'URL che segue immediatamente dopo il punto interrogativo viene definita query string. Una o più coppie parametro-valore possono essere passate al server in questo modo. Ogni coppia viene separata dal carattere "&". La pagina che verrà processata potrà leggere tali valori e usarli per determinare una risposta dinamica. La pagina HTML sottostante mostra un esempio dell'uso di query string:
Es: HelloHi.html
Preferred Greeting Do you prefer a formal greeting or an informal greeting?
Es: HelloHi.cfm
#URL.greet# World!#URL.greet# World!
Il tag
dice a ColdFusion di cercare variabili ed espressioni da valutare. All'interno del tag
, qualsiasi contenuto al di fuori dei caratteri "#" verrà semplicemente ignorato. Un altro modo per scrivere questa pagina potrebbe essere quello di sostituire le due espressioni
prima del tag e uno di chiusura
.
Si noti che i tag
, come regola generale, non possono essere innestati fra loro.
I commenti in ColdFusion sono molto simili a quelli in HTML, infatto vogliono solo un trattino in più: