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 及其它主題的帖子。 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章