ColdFusion是一个稳定、可靠的Web应用服务平台。自从1995年Allaire公司第一次发布ColdFusion以来,它已经成功地证明了自己优秀的可伸缩性、跨平台能力,成为Web应用开发领域的主流力量之一。因此,作为Web应用开发者我们至少应该对ColdFusion有一个基本的了解。
一、脚本基础
作 者 : 仙人掌工作室
ColdFusion使用的服务器端脚本语言称为Cold Fusion Markup Language(CFML,ColdFusion标签语言)。CFML的语法以HTML标记语法为基础,这是为了方便那些已经熟悉HTML的开发者学习CFML。虽然了解一些HTML知识有助于理解CFML,但这并不是必需的。另外应该注意的是,不管CFML这个名字意味着什么,CFML远远不止是一种标签语言——它是一种功能完备的服务器端脚本语言,其功能的强大和丰富足以与ASP中的VBScript媲美。
下面是一些CFML基本标记的例子:
< !--- CFML 注释 --- >
< CFIF Trim(UserName) Is "Bob" >
用户名字是Bob.
< CFELSE >
用户名字不是Bob.
< /CFIF >
< CFLOOP index="i" from="0" to="10" >
< CFOUTPUT >
计数器的当前值是#i#< BR >
< /CFOUTPUT >
< /CFLOOP >
第一行是CFML注释。CFML注释和HTML注释非常相似,主要区别在于CFML注释标记要多一个连字号。第二个语句中的CFIF标记其实是CFML中的If...Then结构,它与VBScript中对应的语句完全相同。第三个语句是循环结构,与VBScript中的For...Next语句相似。CFLOOP标记也能够用来构造与VBScript Do...While语句类似的循环。CFLOOP标记内的CFOUTPUT类似于Response.Write——我们可以用它输出变量内的文本。注意变量必须以#符号分隔。
可以看到,CFML支持流行的脚本语言中可以找到的所有控制结构。
二、进一步了解脚本
作 者 : 仙人掌工作室
CFML提供了几个附加的对Web开发者来说非常有用的基本标记。例如下面用到的< CFFORM >标记,它为开发者提供了高效的表单验证实现方法。在我的印象里,表单验证是Web开发中最麻烦的事情之一,CFFORM标记为我们卸去了这付担子。验证操作并不是由CFFORM自己完成,而是由CFFORM包含的其他标记完成,这些标记能够自动地生成客户端JavaScript,由JavaScript来完成表单内容的合法性检查。
例如CFFORM内的CFINPUT标记。CFINPUT标记支持各种扩展属性,开发者可以利用这些属性精确地控制对输入内容进行哪种类型的验证。
例如,开发者可以指定对标记中的内容进行“mm/dd/yyyy” (美国日期)或“dd/mm/yyyy”(欧洲日期)格式验证,甚至还可以指定输入数据必需是一个合法的信用卡号。这一功能特别实用,它能够剥离输入内容中的空格和连字号,然后对其进行复杂的验证。所有这一切都不需要开发者编写一行客户端代码。
< !--- 几个简单的表单例子。ColdFusion会自动生成进行验证的
客户端JavaScript代码。--- >
< !--- 输入信用卡号码的表单 --- >
< CFFORM action="creditcard.cfm" method="POST" name="frmMyForm" >
请输入信用卡号:< BR >
< CFINPUT type="Text" required="YES" validate="creditcard"
< /CFFORM >
< !--- 输入US日期的表单 --- >
< CFFORM action="USDate.cfm" method="POST" name="frmMyForm" >
请输入您的生日(mm/dd/yyyy):< br >
< CFINPUT type="Text" required="YES" validate="date"
< /CFFORM >
< !--- 输入欧洲日期的表单 --- >
< CFFORM action="EuroDate.cfm" method="POST" name="frmMyForm" >
请输入您的生日(dd/mm/yyyy):< br >
< CFINPUT type="Text" required="YES" validate="eurodate"
< /CFFORM >
CFFORM标记也可作为CFSELECT标记的容器。CFSELECT标记允许开发者直接将选择列表绑定到数据库查询结果上。正如下面的代码所示,实现这个功能的代码非常简洁紧凑。依我看来,使用CFSELECT标记的实现比ASP实现同样的功能更加快速,也具有更好的可读性。