适合读者对象: 有JavaScript、HTML和ColdFusion基础的读者
使用组件可使代码重用,促进企业化开发合作,[CFC]组件和DCOM,CORBA ,EJB 在类似等级,但要比它们简单方便,
且只能在CF中使用,CFC可以直接供flash调用,和做web服务.
在叙述CFC之前,先介绍一个CFMX的新标签<cfscript>,使用这个标签,你可以像使用JavaScript那样,使用类似
的语法,条件流程等语句,但是和JavaScript不同,cfscript只运行在服务器端,且不能使用<, > ,<= ,>=, != ,== , 字符串连接使用 &,var仅用在function中,用于声明局部变量,并使用cf的构造器,使用CF的函数,使用CF
的顶级对象(CGI,FORM,URL,Cookie,Request等),<cfscript>不允许包含其它标签,其允许的语法为:
[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" 表达式为true writeoutput("CF的数据类型是不严谨的!!!"); }else{writeoutput("CF的数据类型是严谨的数据类型"); } </cfscript>
创建ColdFusion Components 组件由函数和属性的集合组成,在dwmx[Dreamweavermx]中可以,可视化的操作,完成组件的创建, [方法,是点击组件面板的+,弹出组件定义对话框,在这个面板中可以定义除函数 属性 参数],定义完成后,切换到代码视图, 在函数中添加主体代码,并设定返回值;即可.有关组件定义的例子,请参考: http://www.blueidea.com/bbs/NewsDetail.asp?GroupName=Flash+%D7%A8%C0%B8&DaysPrune=5&lp=2&id=1159863 CF远程服务实例入门
点击文件/新建 动态 cfc可以新建一个cfc,程序自动完成的代码如下:
<cfcomponent> <!--- 使用<cfcomponent>定义组件---> <!--- 使用<cffunction>定义函数---> <cffunction name="myFunction" access="public" returntype="string"> <!--- 使用<cfargument>定义传递给函数的参数---> <cfargument name="myArgument" type="string" required="true"> <!--- 函数主体---> <cfset myResult="foo"> <!--- 返回数值---> <cfreturn myResult> </cffunction> <!--- 可以定义多个函数---> </cfcomponent>
<!--- 组件的名字就是组件的保存文件名称[无cfc扩展名]推荐的保存位置是webroot目录, driver:/CFusionMX/CustomTags目录, 使用其它目录也可以,后面的例子中,保存在test目录下.--->
下面定义了一个简单的组件:)简单的不能再简单了!!!保存在flashtest目录中,名字为simp.cfc,调用时候 组件名字就是flashtest.simp
<cfcomponent> <cffunction name="hello" access="remote" returntype="string" output="true"> <cfscript>time=now();time="你好,现在是" & 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 = "你传递的参数1:" & par1 & "参数2:" & par2 ; </cfscript> <cfreturn transfer> </cffunction> </cfcomponent>
定义好了,现在开始使用这个组件,CFC组件可以有许多种使用方法,比如url方式和form方式,和可以为flash
调用,url方式的方式是: .../cfcomponent.cfc?method=methodname¶meter=parameterValue...

从cfscript调用组件:
<cfscript> obj=createobject("component","flashtest.simp"); result=obj.urlcall("参数数据1","参数数据2"); //传递参数还可以使用这种方式 //result=obj.urlcall(par2="参数数据2",par1="参数数据1"); writeoutput(result); </cfscript>
从flash调用这个组件,将代码加到第一帧:
nc=new NetConnection(); nc.connect("http://localhost:8500/flashservices/gateway"); obj={}; obj.onResult =function (result) { trace(result); } nc.call("flashtest.simp.urlcall",obj,"传递一个参数","再来一个参数"); //output /* 你传递的参数1:传递一个参数参数2:再来一个参数 */
createobject不仅可以使用cfc元件,而且还可以使用java类,ejb,com ,web服务,corba,例: olemail=createobject("com","cdonts.newmail"); olemail.from="!!!@???.???";...olemail.send(); 使用web服务newobject2 = createObject("webservice","http://www.abcd.ef/gh.wsdl"); 使用java ejb newobject2 = createObject("java","class");
使用这些外部对象和使用cfc是相同的,但需要注意的是数据类型的转换.
出处:蓝色理想
责任编辑:cjj
◎进入论坛网络编程版块参加讨论
|