主頁 > 知識(shí)庫 > ColdFusionMX 編程指南 ColdFusionMX中的循環(huán)

ColdFusionMX 編程指南 ColdFusionMX中的循環(huán)

熱門標(biāo)簽:呼叫中心市場(chǎng)需求 Win7旗艦版 企業(yè)做大做強(qiáng) 客戶服務(wù) 電話運(yùn)營中心 硅谷的囚徒呼叫中心 語音系統(tǒng) 百度AI接口

第五期:ColdFusionMX中的循環(huán)

序言

      任何一種程序再簡(jiǎn)單也要具備一定的邏輯和算法,Coldfusion也不例外。如果只是靠簡(jiǎn)單的標(biāo)簽的堆砌,是無法真正實(shí)現(xiàn)企業(yè)商業(yè)邏輯的。而且,我在這里非常肯定的提出一點(diǎn),就是簡(jiǎn)單絕對(duì)不等于功能弱小。目前,網(wǎng)絡(luò)技術(shù)發(fā)展到了一個(gè)注重表現(xiàn)的時(shí)代,就是每一個(gè)開發(fā)出來的網(wǎng)絡(luò)應(yīng)用,要在實(shí)現(xiàn)邏輯的同時(shí),具備讓客戶有豐富的用戶體驗(yàn)是另一個(gè)追求的目標(biāo)。Flash+Flashremoting+cf serverside script就是一種極具體驗(yàn)的開發(fā)手段。而對(duì)于開發(fā)工具,眾多的開發(fā)廠商更是在工具的易用性上做足了文章,微軟vs.net開發(fā)平臺(tái)的完整統(tǒng)一性,Oracle9i JDeveloper開發(fā)j2ee程序的wizard方式,Macromedia DreamweaverMX眾多的服務(wù)器端的腳本語言的支持,都是在工具易用性上的一種體現(xiàn)。我們今天要給大家講解的就是簡(jiǎn)單易用的coldfusion loop。通過cf中不同的循環(huán)嵌套,能夠?qū)崿F(xiàn)很多在cf中編程的邏輯。

      這里的序言還要補(bǔ)充說明一點(diǎn),操作access數(shù)據(jù)庫時(shí)的中文解決的方法,如果哪位開發(fā)者有興趣,請(qǐng)去這里查看并參與探討:

http://www.flashempire.net/showthread.php?s=a85407ff13de51915c82a57b7eb2e1eethreadid=125029


 

第一部分 看看CF中的流程控制和循環(huán)

我們點(diǎn)擊DreamweaverMX中Insert面板里的cf flow標(biāo)簽,會(huì)看到如下的一行圖標(biāo):

這行圖標(biāo)幾乎完成了coldfusion中最重要的流程和循環(huán)處理。談到流程,我們?cè)趯W(xué)習(xí)任何一門語言的過程中第一個(gè)接觸到的就是if…then…else這個(gè)流程控制語句。想必很多從事網(wǎng)頁設(shè)計(jì)的朋友都不可避免的接觸過這個(gè)邏輯。這個(gè)邏輯是簡(jiǎn)單的,但是是最常用到的。在上圖中,用文字顯示“if else elsif”就是使用cf中的if流程控制。點(diǎn)擊標(biāo)有文字“if”的時(shí)候,我們用原代碼的方式觀察頁面,就會(huì)看到在光標(biāo)所在出已經(jīng)插入了cfif>/cfif>這個(gè)代碼段。我們把所有在cf中用cfxxx>…/cfxxx>都看作一個(gè)封閉的代碼段,不管它有多長,也不管它有多短。

使用cfif標(biāo)簽,標(biāo)準(zhǔn)的簡(jiǎn)單描述應(yīng)該是這樣的:

cfif 你要判斷的條件>

       你要做的事情:可以是一行輸出,也可以是若干個(gè)其他的復(fù)雜的代碼段。

/cfif>

那么我們經(jīng)常使用一些判斷條件的操作符來決定cfif的流程的走向,因?yàn)樵赾fif的邏輯判斷中,只有真(1)和假(0)兩種,如果條件為真,就做cfif標(biāo)簽中間嵌套的事務(wù),如果為假,就跳出這個(gè)邏輯,去處理下一個(gè)邏輯。那么cf中的操作符非常的人性話,它使用語言表達(dá)判斷,而不是符號(hào)。比如,“=”在cfif的條件操作符中要表達(dá)為“EQ”,“>”要表示為“GREATER THAN”或者“GT”。如果我們判斷a是否等于B,那么在cf中要這樣寫:

cfif A EQ B>

cfset A=B>

/cfif>

使用詳細(xì)的條件操作符請(qǐng)看下表:

Operator(解釋)

縮寫

Operator(解釋)

縮寫

IS(==)

EQUAL,EQ

GREAT THAN OR EQUAL TO(>=)

GTE,GE

IS NOT(>)

NOT EQUAL,NEQ

LESS THAN OR EQUAL TO(=)

LTE,LE

GREATER THAN(>)

GT

Contains(包括)

 

LESS THAN()

LT

Does Not Contain(不包括)

 

那么另外的else和elsif是嵌套在完整的cfif中的,下面這段代碼是一個(gè)完整的說明:

cfif 表達(dá)式1>

代碼段1

cfelseif 表達(dá)式2>

代碼段2

cfelse>

代碼段3

/cfif>

如果表達(dá)式一成立,則做代碼段1,如果表達(dá)式1不成立,則判斷表達(dá)式2是否成立,如果表達(dá)式2成立,則做代碼段2,否則做代碼段3。各位沒有開發(fā)基礎(chǔ)的朋友,可以試試這段小代碼,之后運(yùn)行一下就明白結(jié)果了。

cfif 1 is 0>

cfoutput>1/cfoutput>

cfelseif 2 is 0>

cfoutput>2/cfoutput>

cfelse>

cfoutput>3/cfoutput>

/cfif>

開發(fā)程序我們?cè)诳刂屏鞒痰倪^程中,還用到了switch…case方法,在coldfusion的編程方式中同樣支持。而對(duì)于Switch…case方法,使用起來也是很簡(jiǎn)單的,這里進(jìn)行一下簡(jiǎn)單的講解。點(diǎn)擊 這三個(gè)圖標(biāo)來完成cfswitch的操作,目的在于讓開發(fā)者進(jìn)行同一種表達(dá)式對(duì)于多種結(jié)果值的條件下進(jìn)行流程的選擇。點(diǎn)擊了左邊的圖標(biāo)之后,我們會(huì)看到下面的窗口:

語法操作如下:

cfswitch expression= "#var#">

       cfcase value= "x1">

              action1

       /cfcase>

       cfcase value= "x2">

              action2

       /cfcase>

       …

       cfdefaultcase>

              default action

       /cfdefaultcase>

/cfswitch>

語法解釋非常的簡(jiǎn)單,對(duì)于表達(dá)式expression,用cfcase的value屬性來反映表達(dá)式中#var#的值,然后針對(duì)不同的值,來響應(yīng)不同的action,做不同的操作,如果沒有值匹配,那么做cfdefaultcase標(biāo)簽中的默認(rèn)action。來個(gè)macromedia官方標(biāo)準(zhǔn)的程序段看看:

cfquery name = "GetEmployees" dataSource = "cfsnippets">

SELECT Emp_ID, FirstName, LastName, EMail, Phone, Department

FROM Employees

/cfquery>

h3>cfswitch Example/h3>

p>Each time the case is fulfilled, the specific information is printed;

if the case is not fulfilled, the default case is output /p>

cfoutput query="GetEmployees">

cfswitch expression="#Trim(Department)#">

cfcase value="Sales">

#FirstName# #LastName# is in b>sales/b>br>br>

/cfcase>

cfcase value="Accounting">

#FirstName# #LastName# is in b>accounting/b>br>br>

/cfcase> cfcase value="Administration">

#FirstName# #LastName# is in b>administration/b>br>br>

/cfcase>

cfdefaultcase>

#FirstName# #LastName# is not in Sales, Accounting, or

Administration.br>br>

/cfdefaultcase>

/cfswitch>

/cfoutput>

這段代碼就是通過了cfswitch來顯示cfmx默認(rèn)數(shù)據(jù)源cfsnippets中Employees表中的人員,而方式用department(所在的部門)變量在cfswitch中cfcase的不同value來區(qū)分顯示開來。

我們來看cf flow面板中的另外3個(gè)圖標(biāo)集合: ,這3個(gè)圖標(biāo)從左到右,依次是cftry、cfcatch、cfthrow。這3個(gè)tag在進(jìn)行cf應(yīng)用程序的編寫調(diào)試過程中,起到了重要的作用。這3個(gè)標(biāo)簽實(shí)際上是進(jìn)行了應(yīng)用程序的錯(cuò)誤和異常的處理。為什么要有錯(cuò)誤和異常的處理?作者本人認(rèn)為有兩個(gè)大的方面的作用。第一,就是提醒開發(fā)人員應(yīng)用程序出錯(cuò)或異常,同時(shí)使系統(tǒng)在交付給客戶之后出現(xiàn)錯(cuò)誤或異常后,能夠使用不同方式的處理給客戶一個(gè)可靠的感覺。第二,就是減少應(yīng)用程序遭受攻擊的可能。如果我們不使用錯(cuò)誤和異常處理,那么我們經(jīng)??梢钥吹?,如果程序處理出錯(cuò),會(huì)在web瀏覽器里暴露出不該出現(xiàn)的信息,比如數(shù)據(jù)庫表名,字段名,甚至對(duì)數(shù)據(jù)庫的操作等等。其實(shí)這些出錯(cuò)信息是不應(yīng)該對(duì)外顯示在web瀏覽器里的。

我們?cè)诰帉慶oldfusion應(yīng)用程序的時(shí)候,應(yīng)該注意一下可能出現(xiàn)的錯(cuò)誤類型,從而能使用cfmx administrator里的設(shè)定和cftry等tag結(jié)合來處理這些錯(cuò)誤。我們經(jīng)常遇到的錯(cuò)誤分為五類:語法錯(cuò)誤、數(shù)據(jù)庫操作錯(cuò)誤、應(yīng)用服務(wù)器(application server)環(huán)境錯(cuò)誤、邏輯錯(cuò)誤和驗(yàn)證錯(cuò)誤。按照這些錯(cuò)誤的重要性來排序,第一位的就是應(yīng)用服務(wù)器環(huán)境錯(cuò)誤,這些錯(cuò)誤由application server產(chǎn)生,它可能會(huì)導(dǎo)致整個(gè)coldfusion應(yīng)用不能運(yùn)行。所以排在最為重要的位置。其他的我們應(yīng)該力圖減少語法和邏輯錯(cuò)誤,因?yàn)檫@種錯(cuò)誤可以通過不斷的debug來修正,而且這類錯(cuò)誤的調(diào)試比較消耗精力。

我們先來看下圖,這是我操作cfmx administrator->debugging settiongs的過程中的一個(gè)截圖:

如果你選擇了Enable Robust Exception Information這個(gè)選項(xiàng),在cfm頁面出現(xiàn)錯(cuò)誤的時(shí)候,將通過瀏覽器可以看到application顯示的應(yīng)用錯(cuò)誤信息,包括頁面模板物理路徑、頁面的URI,錯(cuò)誤行數(shù)(不一定準(zhǔn)確)、操作的數(shù)據(jù)庫語句、數(shù)據(jù)源名稱、Java堆棧的trace方式等等。這樣其中一些信息顯然是你在把項(xiàng)目提交給客戶后不希望顯示的,所以在production server上安裝完coldfusionMX之后,要把這個(gè)選項(xiàng)的勾選去掉。

通過簡(jiǎn)單的介紹cftry>和cfcatch>之后,可能很多人都不會(huì)使用,那么我們用一個(gè)最最簡(jiǎn)單的數(shù)據(jù)庫的操作來說明錯(cuò)誤處理的作用?;貞浵惹暗某绦?,我們先寫下一段簡(jiǎn)單的數(shù)據(jù)庫query程序段:

CFQUERY NAME="demo" DATASOURCE="cfsnippets">

SELECT      Emp_ID, LastName

FROM         Employees

/CFQUERY>

如果我們把cfsnippets的名稱改成xxx,那么我們看看會(huì)發(fā)生什么情況?請(qǐng)看下面的截圖:

上面的這張截圖是cf server自動(dòng)給出的錯(cuò)誤信息顯示頁面。這個(gè)頁面上,看看我們提供了哪些重要的信息給來自外部的訪問人員?數(shù)據(jù)源名稱,文件的物理路徑,sql查詢的語句。這些信息完全給那些帶有惡意的訪問者以可乘之機(jī)。那么我們應(yīng)該使用cftry>和cfcatch>來避免這些報(bào)錯(cuò)信息的顯示。修改以后的代碼如下:

cftry>

CFQUERY NAME="demo" DATASOURCE="xxx">

SELECT      Emp_ID, LastName

FROM         Employees

/CFQUERY>

CFCatch Type="database">

       對(duì)不起!我們不能連接到數(shù)據(jù)庫服務(wù)器!非常抱歉!

       CFAbort>

/CFCatch>

/cftry>

之后我們看到的瀏覽器中的顯示信息為:

“對(duì)不起!我們不能連接到數(shù)據(jù)庫服務(wù)器!非常抱歉!”

這樣,很多非常重要的,涉及到安全性的信息就被保護(hù)了起來,同樣也就降低了服務(wù)器被惡意攻擊的可能性。
第二部分 在原有的基礎(chǔ)之上深入一下

很多開發(fā)人員在學(xué)習(xí)了五個(gè)部分的基本coldfusionMX的知識(shí)后,已經(jīng)可以進(jìn)行一些簡(jiǎn)單的應(yīng)用程序編寫了。那么我們就在原有的基礎(chǔ)之上,深入一下。講解coldfusionMX的最新的CFComponent的基本知識(shí)。關(guān)于本教程的中的一些CFComponent的資料來源于macromedia官方。

在開始講解CFComponent(以下簡(jiǎn)稱CFC)之前,先來一段簡(jiǎn)單的概要,讓各位開發(fā)人員在整體上對(duì)CFC進(jìn)行一下介紹。很多開發(fā)人員可能對(duì)asp都比較熟悉,asp可以和com,com+結(jié)合起來應(yīng)用而com就是基于微軟的一種組件技術(shù)。說這種技術(shù)高深也好,易用也罷,從我這里認(rèn)為,組件開發(fā)技術(shù)就是提供給應(yīng)用程序一組高可用性的代碼。什么是可用性?在英文里就是reuse。專業(yè)一點(diǎn)就是代碼重用。CFC也不例外,通過簡(jiǎn)單的將許多不同功能的cfml代碼段進(jìn)行一定邏輯的組合,并賦予不同的訪問方式,就構(gòu)成了CFC。那么CFC相比對(duì)于以前的CF的自定義標(biāo)簽又有什么優(yōu)勢(shì)和不同?CFC最大的優(yōu)點(diǎn)就是不包含表現(xiàn)性質(zhì)的代碼,也就是說,一個(gè)CFC具有某種純粹的邏輯,然后通過不同的調(diào)用方式和附加性的修飾標(biāo)簽來呈現(xiàn)給外部不同的結(jié)果,是完全符合web技術(shù)開發(fā)的需求,那就是表現(xiàn)與邏輯分離。而,custom tag則不是這樣,它是構(gòu)造一個(gè)Function,可以把表現(xiàn)與邏輯混在一起,通過其他cfm頁面的操作來呈現(xiàn)結(jié)果。還有一個(gè)不同是CFC是一種對(duì)象,具有不同的訪問方式,也具有了method的入口操作方式,也具有了參數(shù)控制方式。如果上面這部分解釋理解比較吃力的話,那么我們用一個(gè)經(jīng)常開發(fā)的模塊來說明問題。我們經(jīng)常在開發(fā)互動(dòng)性網(wǎng)站的時(shí)候,經(jīng)常會(huì)開發(fā)用戶注冊(cè)和驗(yàn)證模塊,按照一般的開發(fā)方式,會(huì)有很多個(gè)頁面,比如login.cfm、checkuser.cfm等等一堆的頁面來進(jìn)行用戶的登錄(注冊(cè))操作。我們的邏輯代碼會(huì)寫在所有的需要處理的后臺(tái)文件中。那么會(huì)出現(xiàn)何種煩雜的現(xiàn)象?用cfquery>組成不同的數(shù)據(jù)庫操作代碼段來進(jìn)行用戶名和密碼的查找,返回查找結(jié)果,進(jìn)行form表單輸入值和數(shù)據(jù)庫結(jié)果的驗(yàn)證,通過不同頁面上的不同的嵌入性的邏輯代碼來相應(yīng)用戶的不同操作。這樣的開發(fā)方式不是不可以,但是我們建議cf開發(fā)人員采用一種更先進(jìn)的開發(fā)方式CFC進(jìn)行相應(yīng)功能的開發(fā)。那么開發(fā)相同功能模塊的CFC是一種什么樣子的開發(fā)思路呢?我們可以把需要的代碼段集合在一起,通過特有的構(gòu)成CFC的Tag把這些代碼段變成特有的Components,另外,賦予它們不同的method。還是針對(duì)用戶注冊(cè)和登錄驗(yàn)證的功能模塊,我們換成這種思路:

l         定義一個(gè)user object,把所有對(duì)于用戶的通用操作封裝在這個(gè)object里

l         定義對(duì)于user object的操作方法,例如add(),delete(),update(),get()等等一些通用的操作方法,同樣也可以再增加一些,例如verifyPassword(),GetEmail()等等。

l         對(duì)于不同用戶傳遞不同的參數(shù)給特定的方法來實(shí)現(xiàn)相應(yīng)功能。

好了,不用我說了,大家已經(jīng)可以分辨出使用CFC的優(yōu)點(diǎn):可用性強(qiáng),開發(fā)效率高,擴(kuò)展性強(qiáng)。

那么,我們用什么來構(gòu)造一個(gè)CFC呢?很復(fù)雜?令人頭疼?都不是,用基本的cfml語法知識(shí),外加幾個(gè)特定的構(gòu)造CFC的tag就可以實(shí)現(xiàn)了。那么構(gòu)造CFC的幾個(gè)tag如下:

l         CFComponent>定義一個(gè)CFC

l         CFFunction>定義一個(gè)CFC中的操作方法(method)

l         CFArgument>定義method接收的參數(shù)

l         CFReturn>返回一個(gè)值,或者從method返回。

我們現(xiàn)在構(gòu)造一個(gè)非常簡(jiǎn)單的cfc,看下面的代碼:

!--- Browser id component --->
CFCOMPONENT>
    !--- Is the browser IE? --->
    CFFUNCTION NAME="IsIE">
                               !--- Init variable --->
                               CFSET result="No">
                               !--- Look for IE identifier --->
                               CFIF FindNoCase("MSIE", CGI.HTTP_USER_AGENT)>
                                              !--- Yep, got it --->
                                              CFSET result="Yes">
                               /CFIF>
                               !--- Return result --->
               CFRETURN result>
               /CFFUNCTION>
/CFCOMPONENT>

文件存儲(chǔ)成為browser.cfc,我們大家可以看到,所有的cf代碼在cfcomponent>/cfcomponent>標(biāo)簽之間。這個(gè)cfc有一個(gè)Function叫做IsIE,目的是判斷瀏覽器的類型。默認(rèn)的結(jié)果是No,那么如果檢測(cè)出有MSIE這個(gè)串(不分大小寫),結(jié)果為true。這個(gè)Function返回的值就是result。很簡(jiǎn)單是不是?

在構(gòu)造好browser.cfc這個(gè)Component之后,如何應(yīng)用這個(gè)browser.cfc呢?在存放browser.cfc的目錄下再生成一個(gè)test.cfm文件,這個(gè)文件中的代碼使用下面的編寫方式:

!--- Invoke browser CFC --->
CFINVOKE COMPONENT="browser"
                     METHOD="IsIE"
                     RETURNVARIABLE="result_ie">

!--- Feedback --->
CFOUTPUT>
Your browser is:BR>
IE: #YesNoFormat(result_ie)#BR>
/CFOUTPUT>

之后執(zhí)行test.cfm這個(gè)文件,得到的結(jié)果是:

Your browser is:
IE: Yes

Test.cfm這個(gè)文件使用了cfInvoke>這個(gè)標(biāo)簽調(diào)用了browser這個(gè)cfc,并且調(diào)用了IsIE這個(gè)方法,返回的值是使用result_ie。上面的cfc只是一個(gè)判斷ie瀏覽器的程序,下面來個(gè)全的:

CFCOMPONENT>

!--- Is the browser IE? --->

CFFUNCTION NAME="IsIE"

       RETURNTYPE="boolean"

       HINT="Is browser Microsoft IE">

!--- If no browser id passed, used current --->

CFARGUMENT NAME="browser"

       REQUIRED="no"

       DEFAULT="#CGI.HTTP_USER_AGENT#"

       HINT="Browser ID, defaults to CGI ID">

!--- Init variable --->

CFSET result="No">

!--- Look for IE identifier --->

CFIF FindNoCase("MSIE", browser)>

  !--- Yep, got it --->

  CFSET result="Yes">

/CFIF>

!--- Return result --->

CFRETURN result>

/CFFUNCTION>

!--- Is the browser Netscape? --->

CFFUNCTION NAME="IsNetscape"

       RETURNTYPE="boolean"

       HINT="Is browser Netscape">

!--- If no browser id passed, used current --->

CFARGUMENT NAME="browser"

       REQUIRED="no"

       DEFAULT="#CGI.HTTP_USER_AGENT#"

       HINT="Browser ID, defaults to CGI ID">

!--- Init variable --->

CFSET result="No">

!--- Look for Netscape identifier and no IE identifier --->

  CFIF FindNoCase("mozilla", browser) AND NOT FindNoCase("MSIE", browser)>

  !--- Yep, got it --->

    CFSET result="Yes">

  /CFIF>

!--- Return result --->

CFRETURN result>

/CFFUNCTION>

!--- Is the browser Dreamweaver? --->

CFFUNCTION NAME="IsDreamweaver"

       RETURNTYPE="boolean"

       HINT="Is browser Dreamweaver">

!--- If no browser id passed, used current --->

CFARGUMENT NAME="browser"

       REQUIRED="no"

       DEFAULT="#CGI.HTTP_USER_AGENT#"

       HINT="Browser ID, defaults to CGI ID">

!--- Init variable --->

CFSET result="No">

!--- Look for DW identifier --->

 CFIF FindNoCase("mmhttp", browser)>

   !--- Yep, got it --->

   CFSET result="Yes">

 /CFIF>

!--- Return result --->

CFRETURN result>

/CFFUNCTION>

!--- Identify a browser

       Returns: IE - Internet Explorer

                            NS ?Netscape

                            DW ?Dreamweaver

                            Empty string is unknown

--->

CFFUNCTION NAME="Identify"

       RETURNTYPE="string"

       HINT="Identify a browser">

!--- If no browser id passed, used current --->

CFARGUMENT NAME="browser"

       REQUIRED="no"

       DEFAULT="#CGI.HTTP_USER_AGENT#"

       HINT="Browser ID, defaults to CGI ID">

!--- Init variable --->

CFSET result="">

CFIF IsIE(browser)>

  CFSET result="IE">

CFELSEIF IsNetscape(browser)>

  CFSET result="NS">

CFELSEIF IsDreamweaver(browser)>

  CFSET result="DW">

/CFIF>

!--- Return result --->

CFRETURN result>

/CFFUNCTION>

/CFCOMPONENT>

上面的第2個(gè)CFC復(fù)雜了一些,我們覆蓋存儲(chǔ)成為browser.cfc,這個(gè)cfc中包含了4個(gè)Function(method):

IsIE,測(cè)試瀏覽器是否為MS的瀏覽器;IsNescape測(cè)試是否是Nescape(mozilla)瀏覽器;IsDreamweaver測(cè)試是否內(nèi)嵌Dreamweaver;Identify返回所有的結(jié)果,如果以上3種都不是,返回空串。程序還為CFFunction添加了兩個(gè)新的屬性:ReturnType是對(duì)返回值的一個(gè)類型確認(rèn)(validate),如果不是ReturnType所描述的類型,將會(huì)顯示一個(gè)錯(cuò)誤。另外,我們的Function中還添加了CFArgument>這個(gè)標(biāo)簽,來設(shè)定BrowserID這個(gè)值,而且設(shè)定Required屬性為no是保證有檢測(cè)不出來的browserid的時(shí)候,提供一個(gè)默認(rèn)的CGI ID。如果required的屬性設(shè)定為yes,那么特定的參數(shù)傳遞如果不符合要求,就會(huì)報(bào)錯(cuò)。我們可以通過下面的這個(gè)test.cfm程序來調(diào)用上面的這段復(fù)雜的browser.cfc:

!--- Check for IE --->

CFINVOKE COMPONENT="browser"

       METHOD="IsIE"

       RETURNVARIABLE="result_ie">

!--- Check for Netscape --->

CFINVOKE COMPONENT="browser"

       METHOD="IsNetscape"

       RETURNVARIABLE="result_ns">

!--- Check for DW --->

CFINVOKE COMPONENT="browser"

       METHOD="IsDreamweaver"

       RETURNVARIABLE="result_dw">

!--- Identify browser --->

CFINVOKE COMPONENT="browser"

       METHOD="Identify"

       RETURNVARIABLE="result_id">

!--- Feedback --->

CFOUTPUT>

Your browser is:BR>

IE: #YesNoFormat(result_ie)#BR>

NS: #YesNoFormat(result_ns)#BR>

DW: #YesNoFormat(result_dw)#BR>

ID: #result_id#BR>

/CFOUTPUT>

顯示的結(jié)果為:

Your browser is:
IE: Yes
NS: No
DW: No
ID: IE

其實(shí)我們可以用兩種方式從內(nèi)部觀察一個(gè)cfc,第一種就是通過直接的url訪問。上面第2個(gè)最終的browser.cfc在我本機(jī)的url為:

http://localhost:8500/cfdev/browser.cfc

輸入這個(gè)url后,會(huì)先看到cf administrator的界面,輸入登錄的密碼后,系統(tǒng)會(huì)報(bào)告一個(gè)browser.cfc的詳細(xì)信息給開發(fā)人員,截圖如下:

上圖詳細(xì)的介紹了這個(gè)cfc的結(jié)構(gòu)和詳細(xì)信息,想要看到這個(gè)前提是必須有cf server administrator的密碼權(quán)限哦!

第二種方法就是通過dwmx來import這個(gè)cfc,從而可以看到dwmx會(huì)自動(dòng)的識(shí)別出這個(gè)CFC了:

然后我們從組件這個(gè)面板里直接把所需要調(diào)用的cfc method直接drap drop到右邊的編程區(qū)域里去,就可以了。

標(biāo)簽:喀什 濟(jì)南 山西 安康 長沙 山西 海南 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ColdFusionMX 編程指南 ColdFusionMX中的循環(huán)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266