適合讀者對(duì)象: 有JavaScript、HTML和ColdFusion基礎(chǔ)的讀者
使用組件可使代碼重用,促進(jìn)企業(yè)化開發(fā)合作,[CFC]組件和DCOM,CORBA ,EJB 在類似等級(jí),但要比它們簡(jiǎn)單方便,
且只能在CF中使用,CFC可以直接供flash調(diào)用,和做web服務(wù).
在敘述CFC之前,先介紹一個(gè)CFMX的新標(biāo)簽<cfscript>,使用這個(gè)標(biāo)簽,你可以像使用JavaScript那樣,使用類似
的語法,條件流程等語句,但是和JavaScript不同,cfscript只運(yùn)行在服務(wù)器端,且不能使用<, > ,<= ,>=, != ,== , 字符串連接使用 &,var僅用在function中,用于聲明局部變量,并使用cf的構(gòu)造器,使用CF的函數(shù),使用CF
的頂級(jí)對(duì)象(CGI,FORM,URL,Cookie,Request等),<cfscript>不允許包含其它標(biāo)簽,其允許的語法為:
[if, else if, else],[for],[for in],[do while],[while],[try catch ],[function var continue break return]
<cfscript> //注釋這樣使用,還可以/* ....*/ a="賦值語句"; b=7; if (7 eq "7"){ //7=="7" 表達(dá)式為true writeoutput("CF的數(shù)據(jù)類型是不嚴(yán)謹(jǐn)?shù)?!!"); }else{writeoutput("CF的數(shù)據(jù)類型是嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)類型"); } </cfscript>
創(chuàng)建ColdFusion Components 組件由函數(shù)和屬性的集合組成,在dwmx[Dreamweavermx]中可以,可視化的操作,完成組件的創(chuàng)建, [方法,是點(diǎn)擊組件面板的+,彈出組件定義對(duì)話框,在這個(gè)面板中可以定義除函數(shù) 屬性 參數(shù)],定義完成后,切換到代碼視圖, 在函數(shù)中添加主體代碼,并設(shè)定返回值;即可.有關(guān)組件定義的例子,請(qǐng)參考: http://m.95time.cn/bbs/NewsDetail.asp?GroupName=Flash+%D7%A8%C0%B8&DaysPrune=5&lp=2&id=1159863 CF遠(yuǎn)程服務(wù)實(shí)例入門
點(diǎn)擊文件/新建 動(dòng)態(tài) cfc可以新建一個(gè)cfc,程序自動(dòng)完成的代碼如下:
<cfcomponent> <!--- 使用<cfcomponent>定義組件---> <!--- 使用<cffunction>定義函數(shù)---> <cffunction name="myFunction" access="public" returntype="string"> <!--- 使用<cfargument>定義傳遞給函數(shù)的參數(shù)---> <cfargument name="myArgument" type="string" required="true"> <!--- 函數(shù)主體---> <cfset myResult="foo"> <!--- 返回?cái)?shù)值---> <cfreturn myResult> </cffunction> <!--- 可以定義多個(gè)函數(shù)---> </cfcomponent>
<!--- 組件的名字就是組件的保存文件名稱[無cfc擴(kuò)展名]推薦的保存位置是webroot目錄, driver:/CFusionMX/CustomTags目錄, 使用其它目錄也可以,后面的例子中,保存在test目錄下.--->
下面定義了一個(gè)簡(jiǎn)單的組件:)簡(jiǎn)單的不能再簡(jiǎn)單了!!!保存在flashtest目錄中,名字為simp.cfc,調(diào)用時(shí)候 組件名字就是flashtest.simp
<cfcomponent> <cffunction name="hello" access="remote" returntype="string" output="true"> <cfscript>time=now();time="你好,現(xiàn)在是" & time;</cfscript> <cfreturn time> </cffunction> <cffunction access="remote" name="urlcall" output="true" returntype="string"> <cfargument name="par1" type="string" required="false" default=""> <cfargument name="par2" type="string" required="false" default=""> <cfscript> transfer = "你傳遞的參數(shù)1:" & par1 & "參數(shù)2:" & par2 ; </cfscript> <cfreturn transfer> </cffunction> </cfcomponent>
定義好了,現(xiàn)在開始使用這個(gè)組件,CFC組件可以有許多種使用方法,比如url方式和form方式,和可以為flash
調(diào)用,url方式的方式是: .../cfcomponent.cfc?method=methodname¶meter=parameterValue...
從cfscript調(diào)用組件:
<cfscript> obj=createobject("component","flashtest.simp"); result=obj.urlcall("參數(shù)數(shù)據(jù)1","參數(shù)數(shù)據(jù)2"); //傳遞參數(shù)還可以使用這種方式 //result=obj.urlcall(par2="參數(shù)數(shù)據(jù)2",par1="參數(shù)數(shù)據(jù)1"); writeoutput(result); </cfscript>
從flash調(diào)用這個(gè)組件,將代碼加到第一幀:
nc=new NetConnection(); nc.connect("http://localhost:8500/flashservices/gateway"); obj={}; obj.onResult =function (result) { trace(result); } nc.call("flashtest.simp.urlcall",obj,"傳遞一個(gè)參數(shù)","再來一個(gè)參數(shù)"); //output /* 你傳遞的參數(shù)1:傳遞一個(gè)參數(shù)參數(shù)2:再來一個(gè)參數(shù) */
createobject不僅可以使用cfc元件,而且還可以使用java類,ejb,com ,web服務(wù),corba,例: olemail=createobject("com","cdonts.newmail"); olemail.from="!!!@???.???";...olemail.send(); 使用web服務(wù)newobject2 = createObject("webservice","http://www.abcd.ef/gh.wsdl"); 使用java ejb newobject2 = createObject("java","class");
使用這些外部對(duì)象和使用cfc是相同的,但需要注意的是數(shù)據(jù)類型的轉(zhuǎn)換.
出處:藍(lán)色理想
責(zé)任編輯:cjj
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|