Stefano Bernardoni
a- a+

Introduzione a Coldfusion (I parte)

Che cos'è Coldfusion?

Coldfusion è un application server, un processore dipagine web con estensione .cfm, totalmente indipendente dalclient e che quindi supporta qualsiasi tecnologia latoclient. L'application server elabora le istruzioni dellepagine .cfm e restituisce al web server il risultato come unapagina HTML, che a sua volta consegnerà al browser delclient.

Ecco uno schema sintetico di come lavora un applicationserver:

Il linguaggio di scripting che coldfusion utilizza èil CFML (Coldfusion Markup Language), la cui strutturaè composta da una sintassi a TAG, una grosso numero difunzioni (circa 270) ed inoltre lo sviluppatore puòcreare dei tag personalizzati che hanno il vantaggio diessere mantenibili, riutilizzabili e modularizzabili,funzioni personalizzate (UDF) e componenti.

Spero sia già chiaro al lettore qual è ladifferenza tra una pagina web statica e una dinamica, ma pertoglierci questo dubbio una pagina statica èsemplicemente una pagina con cablato al suo interno sia lagrafica che il contenuto, mentre quello di una paginadinamica varia a seconda di richieste specifiche dell utenteo ad altre azioni che interagiscono con una fonte dati, comepuò essere un database.

- Ma qual è la potenza di coldfusion rispetto ad altrilinguaggi di scripting?

I più grossi vantaggi sono sicuramente la rapida curvadi apprendimento, la sua sintassi a tag che richiama quella,che un pò tutti conosciamo, dell HTML, l integrazionecon altri prodotti e linguaggi (XML, COM, WEB SERVICES,JAVA....), una sostanziale indipendenza dalla piattaforma, ilsupporto di altri application server J2EE (IBM Webspher, SunIplanet, Bea Weblogic...)

e molte altre caratteristiche che approfondiremo in seguito.

In questo articolo vorrei porre l'attenzione in particolmodo sul linguaggio di scripting per far capire

come è semplice scrivere un applicazione web con CFML.

Proviamo innanzitutto a dare un'occhiata sommaria allasintassi, prendiamo come esempio il tag che utilizzeremo perconnetterci ad un database.<CFQUERY>.

<cfquery name="nomeQuery" datasource="nomeDatasource">SELECT ordine_cod FROM ordini</cfquery>

Questo tag CFML possiede attributi (name, datasource), uncorpo, in questo caso le istruzione SQL, un tag di chiusura.

Tutti i tag CFML sono sempre preceduto dal suffisso CF edhanno un nome esplicativo, per esempio <cfmail> serveper inviare mail, <cfquery> per interrogare database.

Le variabili CFML (dati dinamici) vengono richiamate tramitela notazione a cancelletti

<cfoutput>#miaVariabile# </cfoutput>

Infine il CFML è case insensitive cioè scriveretag e funzioni sia in minuscolo che maiuscolo è lastessa cosa.

Per cominciare ad utilizzare Coldfusion è sufficientescaricare dal sito di Macromedia la versione trial dellapplication server e di un editor come Dreamweaver, mapuò essere tranquillamente utilizzato qualsiasi editordisponibile sul mercato.

Ecco l indirizzo per scaricare i prodotti macromedia:

http://www.macromedia.com/it/software/trial_download/.

CFM vs ASP

Riprendiamo il tag CFQUERY scritto poco sopra e proviamo acreare un semplice pagina CFML con un output di dati estrattida un database:

 

< CFQUERY name="nomeQuery" datasource="nomeDatasource">SELECT ordine_cod FROM ordini</ CFQUERY ><CFOUTPUT># ordine_cod #</CFOUTPUT>

 

Facciamo ora la stessa cosa con ASP:

<%set cnn = server.createobject("ADODB.Connection")cnn.ConnectionString="DSN= nomeDatasource;database=nomedb;UID=;PWD=;"cnn.OpenSet rst = cnn.Execute("SELECT ordine_cod FROM ordini")ON ERROR RESUME NEXTWHILE NOT rst.EOFResponse.Write rst("ordine_cod")rst.MoveNextWEND%>

Proviamo ora a scrivere il codice per inviare una mail:

<CFMAIL to="# txtTo #" from="#myMail#" subject="#txtSubject#">#txtMessage#</CFMAIL>

Riscriviamolo in ASP:

<%Dim objMsg, strFrom, strTo, strSubject,strBody,lngImportancestrFrom = Trim(Request.Form("txtFrom"))strTo = Trim(Request.Form("txtTo"))strSubject = Trim(Request.Form("txtSubject"))strBody = Trim(Request.Form("txtMessage"))lngImportance = Trim(Request("optImportance"))Set objMsg = Server.CreateObject("CDONTS.NewMail")objMsg.From = strFromobjMsg.To = strToobjMsg.Subject = strSubjectobjMsg.Body = strBodyobjMsg.Importance = lngImportanceobjMsg.SendmailToSet objMsg = Nothing%>

Come si può notare interrogare un database o inviareuna mail con CFML è veramente semplice, al contrariodi ASP che, in alcuni casi, richiede una conoscenzaapprofondita degli oggetti COM.

Iniziare ad utilizzare CFML non necessita nessuna base diprogrammazione, è sufficiente conoscere l HTML e dellenozioni di base di SQL.

Diamo ora un'occhiata a qualche altro tag CFML:

Per interrogare un database esistono, oltre a quello cheabbiamo appena visto, anche dei tag che evitano l utilizzo diSQL, in quanto sono generati dinamicamente:

Aggiornamento di una tabella:

<CFUPDATE datasource ="nomeDatasource" tablename="miaTabella" formfields="campiForm">

Inserimento di un record:

<CFINSERT datasource=" nomeDatasource " tablename=" miaTabella " formfields="campiForm">

Questa semplice sintassi ha per contro qualche limitazionecome accettare solo campi form e tali campi devono avere inomi uguali a quelle delle colonne corrispondenti deldatabase.

E possibile anche evitare di inserire i controlli javascriptdei campi form :

<CFFORM action="action.cfm" method="post" name="nomeForm">< CFINPUT type="text" required="yes" message="messaggio di errore"></CFFORM>

Infatti l'application server Coldfusion, quando incontraquesto tag, abbinato al <CFFORM?>,

creare dinamicamente il controllo javascript per questocampo.

Elaborazione condizionale:

<CFIF miaVariabile is "0">codice da eseguire se la condizione è vera</CFIF>

Cicli:

<CFLOOP index="i" FROM= "1" TO="10"><CFOUTPUT>#i#</CFOUTPUT></CFLOOP>

Upload di un file sul server:

<CFFILE action="upload" filefield="campoForm" destination="pathDirectory" >

Di esempi se ne potrebbero fare tanti, ma non è nellobbiettivo di questo documento elencare tutte lefunzionalità che il linguaggio CFML mette adisposizione, cercheremo quindi di elencare, oltre a quellegià esposte, le più significative:

Creazione di grafici

É possibile creare grafici a due e tre dimensioni condati provenienti da un database, ecco un esempio:



 

e qui di seguito un esempio di codice CFML:

 

<CFCHARTxAxisTitle="Department"yAxisTitle="Salary Average"font="Arial"gridlines=6showXGridlines="yes"showYGridlines="yes"showborder="yes"show3d="yes"><cfchartseriestype="bar"query="DeptSalaries"valueColumn="AvgByDept"itemColumn="Dept_Name"seriesColor="olive"paintStyle="plain"/></CFCHART>