CFML----一门在国外很多大公司得到应用的语言

前一段由于项目的需要,学了一种新语言--CFML.虽然以前连听也没怎么听说过,
但是这是一门标签语言,用法和HTML类似,所以对于PG来说,一点也不难.

把一些不错的资料给有需要人共享一下!不过真正开发时,给自己帮助最大的还是CFDOC了.
主要是应用函数和标签!
不过我共享的这些资料对一开始刚入门学习这门语言还是很有帮助的.
相关资料整理后共享!
---------------------------------
几个不错的网址:

http://www.macromedia.com/examples/cfgettingstarted/
experience/docs/steps_for_building_dynamic_pages_en.pdf  (官方网站帮助)

http://www.mmug.cn/forum/index.cfm?sPart=G&sForumId=010&iItemId=65
(COLDFUSION MX 7 认证考试中文学习指南)

http://www.forta.com(Ben的网站,Ben 是 Macromedia 的官方
ColdFusion 培训材料、认证考试和针对这些考试的 Macromedia Press* 学习指南的作者之一,
目前他在世界范围内举办讲座、进行演讲和编写应用程序.Ben 的 blog 在 forta.com/blog*,
您可以在那里读到他定期发表的有关 ColdFusion 及其它主题的帖子。)


http://www.cfsky.com/也是一个很不错的CF网站

http://www.adobe.com/devnet/coldfusion/articles/globalize_05.html
(官方关于COLDFUSION 全球化应用的介绍)

http://www.pconline.com.cn/pcedu/sj/wz/other/10207/72489.html
Macromedia ColdFusionMX 开发者(目录)

http://www.cflib.org自定义函数库

-------------------------------------------
ColdFusion MX 7 介绍
Ben Forta
www.forta.com*

我们发布 Macromedia ColdFusion MX(历史上最引人注目的和最具雄心的 ColdFusion 更新)已经三年了。ColdFusion MX 是 ColdFusion 历史中重要的里程碑。对于开发团队来说,那是一次可以推倒重建 ColdFusion 的机会,我们可以对所有我们所学到的关于 Web 应用程序及其构建方式的知识加以考虑。

ColdFusion MX 首先是一个架构性的发行版本。它具有以下特点:

全新的基于 Java 的引擎
真正的编译器
基于行业标准的 J2EE 服务器部署
更好地支持 XML、SOAP 及其它标准
连接 Java 世界
当然,ColdFusion MX(和 ColdFusion MX 6.1)也具有重要的新功能、语言增强、经过改进的性能,以及更好的可升级性和可靠性。但 ColdFusion MX 的核心是关于架构的,是为了利用新功能而对 ColdFusion 内部工作方式的重要投资。

ColdFusion MX 是非常成功的产品,大部分 ColdFusion 用户已从其功能中获益。随着 ColdFusion 的新引擎不断证明其潜质和开发人员忙于发现其中蕴含的新机会,ColdFusion 团队终于能够花时间来构建新的功能了,而这在过去是不可能的。

在超过一年的时间里,我们对几千名 ColdFusion 开发人员进行了访谈。我们将创意和预览发布到世界各地的几百个用户组中,与无数的合作伙伴和客户进行头脑风暴,在堆积成山的愿望列表反馈中跋涉,并与大量(当前和潜在的)用户交流。尘埃落定后,一系列目标浮出水面:

使新用户更为成功。 ColdFusion 总是对新开发人员具有吸引力。没有其它语言或产品像 ColdFusion 一样适合他们的需要。新用户(主要是那些具有构建网页面和静态站点背景的用户)是 ColdFusion 用户集合的重要部分,ColdFusion 必须继续致力于使成功的开发对于这些用户更加简单。这涉及了创建 Dreamweaver 扩展和配置屏幕,提供更好的新鲜出炉的教学和更为可用的价值,以及更多。
为现有用户提供即时可用的功能特性。开发人员从不隐瞒自己想要的功能。我们需要提供他们要求的功能和特性。
帮助开发人员(我们的用户)取悦于他们的用户。ColdFusion 应用程序的消费者具有共同的需求—他们喜欢在为他们创建的应用程序中看到的东西。很多这些需求是关于应用程序如何捕捉和显示数据。ColdFusion 必须提供新的、强大的表单、报表和打印功能。
改进可靠性和部署选项。ColdFusion 的 Java 内核使各种强大和重要的部署和可靠性选项成为可能。现在,ColdFusion 需要使这些对您和您的应用程序而言比以往更为可用。
创新、创新、创新。ColdFusion 在 Web 快速开发方面一直领先。事实上,现在仍没有构建基于 Web 的应用程序的更快速方法。ColdFusion 的开发经验需要被应用到新的平台和技术上,从而使它们同样地使用就绪。
这些都是重要的,甚至是崇高的目标。我们投入了几万个开发小时,启动了迄今为止最大的 beta 测试项目,并保持与客户定期接触以便他们帮助我们集中力量并沿着正确的方向前进。

结果就是历史上最具客户导向的 ColdFusion 版本,一个为构建实际应用程序的实际开发人员解决了实际问题的功能丰富的发行版本,一个达到和超过所列目标的产品。

因此,我想借此机会向您正式介绍 ColdFusion MX 7。

经过改进的表单字段验证
数据条目表单长久以来一直是基于 Web 的应用程序的阿喀琉斯之踵。无需批评 HTML 表单(事实上,您一定有亲身体验),ColdFusion MX 7 以几种方式改进了表单,首先是经过改进的表单字段验证。

首先,ColdFusion 包含了额外的验证类型,包括一直被要求的电子邮件和 URL 验证。此外,使用客户端验证时出现的 javascript 错误消息将一次显示所有验证错误,而不仅仅是第一个验证错误。

也许更重要的是,现在同时执行客户端和服务器端验证更简单了。cfinput 标签有一个新的名叫 validateAt 的属性可接收三种值:

onSubmit(默认值)指定在客户机提交表单时在客户端进行验证,就像当前的 cfinput 标签中的客户端验证一样。
onBlur 指定在输入焦点离开字段时(例如,用户使用 Tab 键移至下一字段或者鼠标点击其它字段)进行客户端验证。
onServer 指定服务器端验证,同隐藏表单字段执行的验证类型相同。然而,它不需要您实际定义那些字段(字段仍然存在,但是是自动生成和嵌入的)。
请看下面的代码:

<!--- Client-side validation on submit --->
<cfinput type="text"
         name="quantity"
         validate="integer"
         validateAt="onSubmit"
         required="yes"
         message="Numeric quantity is required!">

<!--- Client-side validation on loss of focus --->
<cfinput type="text"
         name="quantity"
         validate="integer"
         validateAt="onBlur"
         required="yes"
         message="Numeric quantity is required!">

<!--- Server-side validation --->
<cfinput type="text"
         name="quantity"
         validate="integer"
         validateAt="onServer"
         required="yes"
         message="Numeric quantity is required!">

所有三个 cfinput 标签执行相同的验证,但是是在表单提交过程中的不同点执行。最棒的是验证方法可以混合使用。因此,要在客户机和服务器上验证,可以如下所示:

<!--- Client-side validation on submit --->
<cfinput type="text"
         name="quantity"
         validate="integer"
         validateAt="onSubmit,onServer"
         required="yes"
         message="Numeric quantity is required!">

这里,validateAt 属性指定了两个值(onSubmit 和 onServer),因此 ColdFusion 生成客户端验证代码并嵌入隐藏的表单字段以进行服务器端验证。

另一种验证增强是输入屏蔽。ColdFusion MX 7 中引入了一个新属性来解决该问题:mask 使用输入屏蔽作为数据输入的过滤器。屏蔽是由特殊字符构成的字符串,用于验证数据条目:问号 (?) 允许任何字符,字母 A 只允许字母,数字 9 只允许数字,X 允许字母数字字符。任何其它字符代表输入中的该字符自身。

例如,要验证三位数字的年龄,您可以如下所示:

<cfinput type="text"
         name="age"
         maxlength="3"
         mask="999">

屏蔽过滤器 "999" 只接受数字。如果用户输入数字之外的字符,标签将忽略该输入。类似的,要验证格式为 (123) 456-7890 的美国风格的电话号码,您可以使用如下代码:

<cfinput type="text"
         name="phone"
         maxlength="13"
         mask="(999) 999-9999">

这一次屏蔽属性值仍然只允许数字,但自动插入其它字符。

要验证加拿大的邮政编码,您可以使用以下代码:

<cfinput type="text"
         name="postcode"
         maxlength="7"
         mask="A9A 9A9">

现在您应该清楚了。输入屏蔽不能取代输入验证,但它确实能够带来更好的用户体验。

Flash 表单
另一个重要的表单增强不如说是一个替换。一直以来,Macromedia Flash 都是 HTML 表单的潜在取代者,它可以使开发者利用 Flash Player 交付更好的用户体验。当然,那意味着需要学习 Flash 或者部署 Macromedia Flex。对于仅仅希望有更好的表单的 ColdFusion 开发者而言,需要有更简单的解决方案。

为使创建基于 Flash 的表单对于代码编写者更简单,ColdFusion MX 7 引入了一系列标签,使构建功能强大的、复杂的数据条目表单同使用 ColdFusion 一样简单。例如,如果您需要提示用户输入日期(也许是生日),您可以将以下 HTML 代码:

<form action="" ...>
<input type="text" name="dob">
...
</form>

替换为:

<cfform format="flash" action="" ...>
<cfinput type="datefield" name="dob">
...
</cfform>

这样就创建了一个表单中的文本字段,该字段同 HTML 文本字段一样,只是在用户选择该字段时将显示一个弹出的日期选择器。就是这么简单。使用 cfinput 标签的组合来创建控件,并 cfformgroup 标签根据需要将其组合,ColdFusion 开发者无需了解(甚至无需拥有)Flash 即可生成 Flash 表单。

弹出日历只是个开始。其它功能包括:

树形控件
数据网格
多窗格表单(使用选项卡或折叠样式的用户界面)
输入屏蔽
表单控件之间的数据绑定
客户端事件
集成的错误检查和验证反馈
所有这些如何工作?当 ColdFusion 处理包含这些标签的页面时,它将生成创建表单所需的 Flash ActionScript,然后将代码编译生成 SWF 文件并将其嵌入到页面中。所有这些对 ColdFusion 开发者都是隐藏的,开发者只需像原来一样使用 CFML 标签即可。

换句话说,您可以创建利用了 Flash 强大功能的表单,同时保持作为 ColdFusion 特色的效率和简洁性。请继续关注 ColdFusion 开发者中心,近期将有曾进行 Flash 表单工作的 ColdFusion 工程师的文章发布。

可打印的网页
打印(或者说是无法方便地打印)一直以来都为 ColdFusion 开发者所抱怨。考虑到大多数 ColdFusion 开发都涉及到搜索和显示数据的应用程序,这一点并不令人吃惊。毕竟,如果您要生成网页面,然后在浏览器中选择“文件 > 打印”,您永远也拿不准打印输出会是什么样子。

直到现在,开发者都不得不使用各种技巧来控制打印输出的生成,成功度也各不相同。

ColdFusion MX 7 引入了一个新标签(事实上是一族新标签)来将网页面优化为可打印的内容,这一过程就像使用 CFML 一样毫不费力。请看下面的代码片断:

<cfdocument format="pdf">
Here is some text.<br>
<img src="image.gif"> _fcksavedurl=""image.gif">"
</cfdocument>

The cfdocument 接受您提供的任何代码并生成 Adobe PDF 和 Macromedia FlashPaper 格式的可打印文档。在这个例子中,PDF 将包含一行文本,下一行有一幅图像。就是这样。

cfdocument 标签被设计用于任何网页。无需 XHTML 或者特定格式。您可以使用内嵌格式或者 CSS,可以嵌入图像和链接,可以使用表格和 <p> 标签用于对齐,这些都会生效。

此外,cfdocument 还支持:

纵向或横向的页面方向
各种(和自定义)页面尺寸
页眉和页脚
应用于文档不同部分的各种格式化选项(页面尺寸、页眉和页脚)
将生成的输出保存至磁盘
如果您有要打印的网页(任何网页),使用一组简单的标签即可快速高效地解决问题。更多关于可打印输出的信息,请阅读 Xu Chen 的文章,在 ColdFusion MX 7 中以多种格式打印网页。

报表
除了自由格式的页面打印,ColdFusion 开发者通常还有另一种打印相关的需求:结构化报表。长期以来,第三方报表工具一直难以与 ColdFusion 应用程序集成。ColdFusion MX 7 引入了自己的报表解决方案,Report Builder 和报表引擎。

ColdFusion MX 7 引入了一种新的文件类型,CFR(ColdFusion 报表)文件。CFR 文件是您使用新的 ColdFusion Report Builder 创建的报表模板,ColdFusion Report Builder 的外观类似于您使用过的其它报表构建工具。创建报表后,您可以使用 cfreport 标签将其嵌入到应用程序中,如下所示:

<cfquery datasource="mydsn" name="myQuery">
SELECT * FROM myTable
</cfquery>
<cfreport format="FlashPaper"
          template="myReport.cfr"
          query="myQuery">

正如您所看到的,查询在运行时被传入 cfreport 标签。这意味着 CFR 实际上是报表模板,而不是实际的报表,但您可以使用它来根据需要动态地构建任何 SQL 查询。对于 ColdFusion 应用程序创建报表的方式,您拥有完全的灵活性和控制。

ColdFusion 报表具有以下功能:

报表能够以 PDF、FlashPaper 和 Excel 格式生成
直观的报表创作工具,具有报表栏、数据集合函数、嵌入图表等功能
可用于插入图像、文本、行标签和管理数据对齐的工具栏
集成的 SQL query builder
支持子报表(嵌入在其它报表中的报表)
报表创建向导
图表向导
完全的缩放和预览支持
ColdFusion 报表在所有 ColdFusion 版本中可用,ColdFusion 企业版提供了更多支持用于在大使用量环境中管理报表的创建。更多关于报表的信息,请阅读 Collin Tobin 的文章,在 ColdFusion MX 7 中构建报表。

事件网关
一直以来,ColdFusion 都是构建 Web 应用程序的极为简单的方法。这就是为什么我们都使用 ColdFusion - 因为它的简单性(和简单性带来的效率)。但 ColdFusion 并不仅限于 Web。事实上,ColdFusion 甚至不直接同 Web 浏览器交互;那时 Web 服务器的工作。ColdFusion 只是在服务器上执行脚本响应请求 - 这些请求(到目前为止)多是来源于 HTTP。

Could ColdFusion 是否也能响应其它请求 - 例如,数据被发送至特定的端口,或者文件夹内容有改动,或者接收到 SMS 和 IM 消息,或者数据库表格的改动,或者...?答案是肯定的:ColdFusion 能够响应任何和所有这些请求;它只需要一种获知这些事件何时发生的方法。它需要网关。

网关是与其它系统的接口,事件触发的 ColdFusion 处理的方法。在服务器上监视某个文件夹的网关能够在文件夹内容发生改动时触发 ColdFusion 的执行。连接到 SMS 提供商的网关能够响应接收到的 SMS 消息(和发送 SMS 消息)。数据库触发器能够 ping 网关,这样数据库事件就能迫使 ColdFusion 做出处理(想象一下,每当后端数据库发生改动时都能自动和动态地生成静态 HTML 页面)。

ColdFusion MX 7 包含的网关有:

异步处理网关
文件夹监视网关
套接字网关
JMS 网关
Lotus Sametime 网关
XMPP 协议网关
SMS 网关
第三方厂商已在努力创建 ColdFusion MX 7 网关。您也可以编写您自己的网关。结构就是,ColdFusion 现在能够与对您可用的任何后端技术进行交互。更多关于事件网关及其作用的信息,请阅读 Jim Schley 和 Tom Jordhal 的文章,在 ColdFusion 7 中编写和使用事件网关*。

经过改进的部署
ColdFusion(截止到 ColdFusion MX)是经过 Sun 验证的 Java 应用程序,与其它 Java 应用程序一样安装在 J2EE 服务器上。应该说,大致如此。您可以在 J2EE 服务器上部署 ColdFusion MX(包括 ColdFusion MX 6.1),但完整的过程不会让 J2EE 管理员喜欢。

在 J2EE 环境中,管理员通常被指派部署应用程序,但他们并不会非常注意应用程序是什么以及它如何工作。他们也不应该去注意。开发者应该关心应用程序,J2EE 管理员应该关心服务器的正常运转。

如何做到这一点?要在 J2EE 服务器上部署的应用程序被打包为一个 Java 归档文件(通常带有 EAR 或 WAR 扩展名)。归档文件包含应用程序运行所需的一切:源代码、配置设置、支持文件 - 所有东西。应用程序在经过测试且部署就绪时被打包—软件包自身经过测试性部署—然后下发给 J2EE 管理员,管理员将其部署在 J2EE 服务器上。(我做了少许简化,但基本流程是准确。)J2EE 管理员不做,或者不愿意做的是在执行安装后的要完成的步骤列表,这样的列表通常包含创建数据源、设置映射、安装扩展等任务。

但部署 ColdFusion MX 的 J2EE 管理员必须做这些工作。您可以像部署其它 Java 一样部署 ColdFusion 自身 - 核心引擎、编译器和运行时服务,但那只是 ColdFusion 自身。ColdFusion 完毕后,必须有人复制所有 CFML 和 CFC 文件并使用 ColdFusion Administrator 定义数据源和映射等等。换句话说,虽然 ColdFusion 自身的部署类似于任何其它 J2EE 应用程序,整个 ColdFusion 应用程序的部署体验却并非如此。

通过允许您构建完整的 J2EE 部署包,ColdFusion MX 7 改变了这种情况。它提供了一个打包工具,用于创建包含 ColdFusion 运行时(带有或不带特定功能)、应用程序代码、数据源以及更多的完整的 EAR 或 WAR 文件。该工具的运行可能需要一些时间,因为构建一个完整、可部署的 EAR 或 WAR 文件不是一个可以快速完成的过程。完成后,您可以将打包文件交给 J2EE 管理员,像部署其它 Java 应用程序一样部署。这意味着您可以在未运行 ColdFusion 的 J2EE 服务器上部署 ColdFusion 应用程序,因为 Java 包文件中包含有 ColdFusion 引擎。

这是一个重要的、非常为开发者需要的增强。从 J2EE 管理员的角度,部署 ColdFusion MX 7 将同部署任何 Java 应用程序一样。事实上,J2EE 管理员设置无须知道这是一个 ColdFusion 应用程序。对于他们来说,这只是 Java 应用程序。就是这么单纯和简单。

经过简化的多实例
ColdFusion MX 企业版支持 ColdFusion 的多个实例 - 虽然更准确地说这是一个 ColdFusion 用户可以利用的 J2EE 服务器的功能,而不是 ColdFusion 功能。毕竟,ColdFusion MX 是一种 Java 应用程序。我在以前曾经探讨过使用多个实例的好处和重要性,简单地说,使用多个 ColdFusion 实例提供了更高的安全性、稳定性和可升级性。多实例就好像在多台物理服务器上安装 ColdFusion,只是它是在单个服务器上。

如果有现有的 J2EE 服务器,您可以创建多个 EAR 或 WAR 文件,然后将他们像任何其它 Java 应用程序一样部署。如果没有现有的 J2EE 服务器,ColdFusion 安装程序将为您安装 JRun 4。它将创建和部署第一个 ColdFusion 实例,以使您能够快速启动。但当您要部署更多实例时,事情对没有 J2EE 服务器管理经验的用户就有些复杂了。您需要使用 J2EE 服务器管理工具创建新的服务器,运行 ColdFusion 安装程序创建 EAR 或 WAR,展开文件(如果使用的是 JRun),调整 XML 文件,然后将展开的文件复制到服务器文件夹中。这是一个完全切实可行,但并非微不足道的过程。不幸的是,这就是为什么如此多的用户还没有部署多实例。

ColdFusion MX 7 使这一过程更加简单。它有三个同 ColdFusion MX 6.1 一样的安装选项,但在 ColdFusion MX 7 中选择 JRun + ColdFusion 选项将安装额外的管理屏幕,这些管理屏幕可使实例的部署(甚至实例集群的创建)同其它 ColdFusion 管理过程一样简单。您将能够通过简单地填写表单和点击按钮来创建新的实例 - 无需使用 JRun 管理工具或者 ColdFusion 安装程序,无需任何 XML 调整,设置无需知道 EAR 或 WAR 文件是什么。

如何使用这一新功能?我们来看下面的用例:

您部署一个全新的应用程序,该程序使用自己的数据源,由其它开发团队所创建(需要 ColdFusion Administrator 访问权)。您希望新应用程序同现有的生产用应用程序安全隔离。只需创建一个新的实例,为该新实例启动 ColdFusion Administrator,定义数据源和其它需要的设置,复制代码,这就可以了。
您要部署应用程序代码的更新,您需要保留现有的应用程序作为备份,以防万一更新过程中出错。只需创建一个新的实例(您甚至可以创建一个使用旧实例的 CAR 文件以保存数据源和其它需要的配置,为新实例启动 ColdFusion Administrator,并导入 CAR 文件以导入这些配置),复制代码,将 Web 服务器关联至新实例,停止旧实例(以避免不必要的资源使用),这就可以了。如果您随后需要恢复到更新前,启动旧实例并将 Web 服务器再次与之关联即可。就是这么简单。
您有一个应用程序满负荷运行,您希望添加一台额外的服务器运行相同的应用程序以处理更多负载,并在出现服务器问题时提供故障恢复。只需创建一个新的实例,指向包含第一个实例使用的代码和设置的 Java 包,剩下的工作即可交给 ColdFusion 来完成。您将创建第二个实例,配置类似于第一个实例,而且包含同第一个实例相同的应用程序。然后,您可以使用第二个实例来创建集群 - 以启用实例间的会话共享。
现在您应该清楚了。

当然,如果您希望有更多控制,安装程序仍可像现在一样安装 JRun 及其自己的管理软件 - 而且您可以像现在一样部署和管理应用程序。但如果您只是要利用 ColdFusion 企业版相比于 ColdFusion 标准版最明显的好处,ColdFusion MX 7 可以使您的生活更轻松。请继续关注 ColdFusion 开发者中心,近期将有曾进行 Enterprise Manager 相关工作的 ColdFusion 工程师的文章发布。

多种其它特性
这只是个开始。其它 ColdFusion MX 7 特性包括:

XForm 支持
Administrator API
经过改进的 XML 处理
增强的 Web 服务支持
Dreamweaver 扩展
经过简化的 NT 域和活动目录身份验证
更新的 Verity 引擎,具有最新的支持类别
经过简化的 NT/AD 身份验证
WS-I 支持
经过改进的图表功能
Administrator API
新的 Dreamweaver 扩展和向导
ColdFusion MX 是长期以来最被期待的 ColdFusion 版本。这是由开发者为开发者设计的 ColdFusion;是响应大量用户反馈创作出的 ColdFusion;因此也是能够解决实际问题的 ColdFusion。

如果您还在使用旧版本的 ColdFusion,现在该是升级的时候了。如果您还未体验过 ColdFusion 开发,现在正是您开始使用的最佳时机。请查看 ColdFusion MX 7 的升级选项。


--------------------------------------------------------------------------------

关于作者
Ben Forta 是 Macromedia 的高级产品专家,著有多本著作,包括 ColdFusion Web Application Construction Kit* 及其续篇 Advanced ColdFusion Application Development*,还有其它关于 SQL、JavaServer Pages、WAP、Windows 开发的著作,以及更多。Ben 是 Macromedia 的官方 ColdFusion 培训材料、认证考试和针对这些考试的 Macromedia Press* 学习指南的作者之一,目前他在世界范围内举办讲座、进行演讲和编写应用程序。Ben 的 blog 在 forta.com/blog*,您可以在那里读到他定期发表的有关 ColdFusion 及其它主题的帖子。 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章