CF问题解答

CF问题解答
1: 我需要些那些东西来开始使用ColdFusion?
  主要是两样东西:
  1)一个ColdFusion服务器来运行你的应用程序,你可以使用一家支持ColdFusion的空间提供商,或在你本地机器上安装你自己的ColdFusion服务器(开发版的ColdFusion是免费的)。
  2)你还需要一个代码编写环境,Dreamweaver MX 可能是你最好的选择,当然你也可以使用其它任何文本编辑软件。
6: 标准版和企业版的ColdFusion之间有什么主要的区别?
  企业版能运行在更多不同的系统平台上,同时也支持更多种类的数据库,企业版中带了一个JRun,支持同时运行几个ColdFusion实例,企业版还提供了高效率的邮件处理能力等等一些特点。如果您需要一个可用性高且稳定快速的站点,您就该考虑用企业版的ColdFusion。访问下面的地址来获得不同版本之间的性能特点的对比信息。
1: 如何才能在ColdFusion中调用由其它语言编写的程序资源?
  有几种方法:如果想调用能在系统命令行中执行的代码/程序(如在DOS下的tracert,ping),可以用 <CFEXECUTE> 。如果想调用由其它脚本程序(ASP,PHP,JSP )生产的web页面的话,可以用<CFHTTP>。如果想调用Web Service的话可以用<CFINVOKE>(这也是最值得推荐的方法)。不管是那种方法,都能帮您返回所需的结果。


2: ColdFusion能处理XML吗?
  ColdFusion可以读,解析和生成XML数据。CFML甚至还提供了一些函数,帮你处理XSL转型和进行XPath搜索等。


3: ColdFusion能调用Web Services吗?
  在这方面,ColdFusion是非常成熟且易于使用的。只需要在<CFINVOKE>里提供你所要调用的Web Server的WSDL的URL。ColdFusion会自动的进行相关的SOAP和XML的处理。


4: 能用ColdFusion开发Web Services吗?
  用ColdFusion开发Web Services非常的简单。只需要在ColdFusion组件(.CFC文件)中把需要作为Web Services的methods的ACCESS类型定义为remote就可以了(ACCESS="remote")。不过一定要注意小心定义返回数据的类型,也别把一些特殊的字符(包括下划线)用在methods,argument或文件名中。


5: 用那种方法来集成Flash和ColdFusion比较好呢?
  有好几种方法可以用来集成Flash和ColdFusion,(如通过XML和直接的HTTP访问)。但最好的方法是采用Flash Remoting。通过Flash Remoting,可以让Flash端的ActionScript就像是访问Flash自己的对象一样来访问由ColdFusion CFM/CFC所提供的对象。
11: 我需要发送大量的邮件,如何才能提高ColdFusion的处理速度?  
  需要发送大量的邮件的话,您就该用企业版的ColdFusion MX。企业版能够给邮件发送分配多个线程,而且能保持住SMTP的连接,通过这两个特点,企业版能提供更快的邮件处理速度。

12: ColdFusion的自定义标签(CustomTags)的目录是共享的,如何才能让不同的用户都拥有他们自己的自定义标签(CustomTags)的目录?  
  ColdFusion自定义标签(CustomTags)的缺省目录的确是共享的,但自定义标签并不一定要放在这个缺省目录里,用户可以把它们放在任何目录内(甚至一个非WEB目录内)。用户可以在他们自己的目录内创建自定义标签(CustomTags)的目录,并用<CFMODULE>来访问存放在里面的自定义标签(CustomTags)。

13: 如何强制ColdFusion重新编译.CFM文件?  
  最简单的方法是,把编译好的.classs文件手工删掉。它们缺省的存放目录是Web root目录下的WEB-INF/cfclasses目录。、

14: 忘了ColdFusion管理员的密码,怎样才能访问ColdFusion的管理界面呢?  
  没有办法找回密码,但你可以禁止这个密码,然后登陆到ColdFusion的管理界面内重新设一个密码。方法如下:打开neo-security.xml这个配置文件(在ColdFusion安装目录内的lib目录里),找到这一段:<var name=’admin.security.enabled’><boolean value=’true’/></var>。 把true改为false,保存后重起ColdFusion。接着你就能不用密码登陆到ColdFusion的管理界面里,修改密码后在打开neo-security.xml,把false改回true,别忘了保存后再重起ColdFusion。

 常见问题之CF的语言 - CFML  
作者:Ben Forta 时间: 2003-09-17 文档类型:转载 来自:cffaq.com
1: 到底什么时候该用#符号把变量和表达式围起来?  
  在CFML中,#是用来把ColdFusion变量或表达式从字符串中区分开的符号。可以把<CFOUTPUT> 和 </CFOUTPUT>当中的内容当成一个字符串,其中的变量或表达式必须用#围起来,ColdFusion在处理是就会对其做相应的处理。但是,在标签里,所有的数据都被当作变量或表达式而不是字符串,因此不需要#(如:<CFSET x=y+1>)。所以只有在ColdFusion把数据当成字符串时才要用#把变量或表达式区分开。

2: 在HTML中用#表示颜色时(如<CFOUTPUT><hr color="#FF0000">...</CFOUTPUT>),ColdFusion会出错,如何解决?  
  #在ColdFusion有其特殊的意义,是用来把变量和表达式从字符串中区分开的。而且必须配对使用,(如<CFOUTPUT>#now()#</CFOUTPUT>)如果ColdFusion发现只有一个#的话就报错,解决的方法时用两个#来转义,如:<CFOUTPUT><hr color="##FF0000">...</CFOUTPUT>这样就没问题了。

3: 为什么有时候在输出的HTML页面里我得到的是#var#而不是实际的变量?  
  大多数情况下是因为你忘了用<CFOUTPUT> 和 </CFOUTPUT>标签。

4: Verity是用来干什么的?  
  Verity是一个全文搜索引擎。用来实现灵活快速的对特定文字进行搜索。ColdFusion中的Verity有两种使用方法:1)使用Verity对硬盘上的文件按指定内容进行搜索(包括文本文件,MS Word文档等),2)Verity也可以对数据库中的记录进行搜索(特别是对文字内容校多的字段)。
要使用Verity,请参考ColdFusion中的<CFSEARCH>标签。

5: CFML条件判断标签可以嵌套使用吗?  
  CFML的条件判断和流程控制标签(如<CFIF>,<CFLOOP>)可以被嵌套使用,但过多的嵌套会影响执行速度,所以尽量避免不必要的嵌套.

6: 在ColdFusion中使用队列(lists)时,为什么空的元素会被忽略?  
  ColdFusion队列和CSV的有些区别,ColdFusion会忽略空的队列元素,如:ListLen("a,b,,d,e")会返回4而不是5,执行ListGetAt("a,b,,d,e",5)就会报错。在这种情况下,可以先用Replace()函数把所有的",,"(逗号 逗号)替换为", ,"(逗号 空格 逗号)。空格是一个能被ColdFusion识别的队列元素。

7: 什么时候要在<CFQUERY>内的SQL语句中用到引号?  
  所有写在<CFQUERY>和</CFQUERY>中的内容都会被传送到数据库进行处理,和CFML不一样,SQL不会对变量自动转型,在写SQL语句时必须严格遵守SQL语句的规范。所有字符串(包括被用作字符串的变量)都必须用单引号围起来,而数值不能用引号围起来,所用到的日期和时间也都必须符合相应的格式。

8: 我该应用 <CFINSERT> 和 <CFUPDATE> 标签吗?  
  当然可以,而且条件许可的话,没有理由不去用。不过,要注意的是使用这些标签有很大的限制。它们只能和FORM表单用在一起,且表单中的元素必须和数据库中的字段使用相同的名称,另外也无法象标准SQL中那样的功能强大,当用<CFUPDATE>时,还必须在表单中指明关键字段。

9: 我的邮件服务器在发送邮件时需要认证,在用ColdFusion发邮件时我如何能发送认证信息?  
  从ColdFusion MX 6.1开始,ColdFusion支持SMTP的认证。你可以在<CFMAIL>标签中提供相应的认证信息,或在ColdFusion管理界面中用以下的格式提供认证信息:user:password@hostname

10: 能不能在同一邮件中生成普通文本和HTML超文本两种不同的信息?  
  从ColdFusion MX 6.1开始用新的 <CFMAILPART>标签即可。请参考下面的代码。
<CFMAIL TO="..." FROM="..." SUBJECT="...">
   <CFMAILPART TYPE="text">
  普通文本信息。。。   </CFMAILPART>
   <CFMAILPART TYPE="html">
   <B>超文本信息。。。</B>
   </CFMAILPART>
</CFMAIL>

11: 我想发送邮件给一邮件组用户,我如何才能跟踪邮件的发送结果?如失败或者被拒绝。  
  <CFMAIL>中有一个FAILTO属性,可以用来指定一个邮件地址,在遇到邮件发送失败的情况时,ColdFusion会向此邮件地址发送一个失败通知。

<CFMAIL TO="#email#"
        FROM="admin@myhost.com"
        FAILTO="listadmin@myhost.com" ...>
...
</CFMAIL>

12: 怎么才能得到一个文件的大小,最后修改的日期和时间?  
  <CFDIRECTORY>可以用来访问ColdFusion所在服务器上的文件目录, 其中的ACTION="list" 参数可以帮你获得这些信息。


13: ColdFusion可以访问客户机上的文件吗?  
  不可以,ColdFusions是运行在服务器端的,不能在客户机端做任何操作。ColdFusion只能通过客户端的浏览器获得一些客户机信息。所以ColdFusion不能访问处理客户机端的任何文件,除非在上传到服务器端以后。
  
14: 如何把客户端的文件传递给ColdFusion?  
  最安全的方法是通过客户的浏览器使用HTTP文件上传功能。ColdFusion的确可以通过HTTP或FTP访问网络资源,但这要求被访问的一端有相应的HTTP或FTP服务器。这在一般的客户端都是没有的。
  
15: 如何写一段能用来让客户上传文件的表单代码?  
  创建一个表单,指定表单的ENCTYPE属性为"multiform/form-data",添加一个表单元素,类型为“文件”(TYPE="file")。这段代码在客户端显示的时候,客户会看到相应的操作界面来选择要上传的文件,当这个表单被递交的时候,文件就会被上传到服务器端。
<FORM ACTION="process.cfm"
      ENCTYPE="multipart/form-data"
      METHOD="post">
file: <INPUT TYPE="file" NAME="FileToUpload">
<BR>
<INPUT TYPE="submit" value="Upload">


16: 如何访问并处理上传的文件?  
  通过客户端表单上传的文件可以由<CFFILE ACTION="upload"> 标签来访问处理。通过此标签,可以对上传的文件进行处理,如保存,改名,限制上传文件类型等。

17: REQUEST有效的有效范围是什么?  
  和Variables一样,Request只能在一个页面处理请求中有效(同Application或Session对比)。但它们的区别在于,Request同时还能被同一页面处理过程中所用到的其它文件所访问,如Custom Tags。
  
18: 如何在用户关闭浏览器后马上结束session变量  
  在ColdFusion MX中,通过改变ColdFusion管理员界面中的一个设置,就能轻易实现:进入Memory Variabes菜单,选中Use J2EE session variables选项。
在MX以前的版本中,ColdFusion Session变量使用cookies(CFID和CFTOKEN)来定位每一个用户。缺省的情况下,这些Cookies留在客户端的硬盘上,即使用户关闭浏览器。要避免这种情况,这需要重写这些Cookies让它们在浏览器关闭之后过期就可以了。请参考下面的代码。

<CFCOOKIE NAME="cfid" value="#SESSION.cfid#">
<CFCOOKIE NAME="cftoken" value="#SESSION.cftoken#">


19: 什么时候需要用到<CFLOCK>  
  <CFLOCK>是用来控制对一段代码或变量的并发存取的。在早期的ColdFusion版本中,如果不对并发的存取进行控制的话,可能会导致服务器的不稳定。在ColdFusion MX中,这一问题已经得到解决,但还是有理由要使用<CFLOCK>的。首先,有些情况下必须使用<CFLOCK>,如多用户情况下对系统文件的存取。其次,就算对一段代码或变量的并发存取不会导致系统的不稳定,有时也会给你的程序带来一些影响,导致一些奇怪的程序结果。如当对一个application变量进行修改而不把此变量锁定话,用户访问到的可能是一部分新的数据,一部分老的数据。那样程序运行结果可能就不是你预想的那样了。所以当出现类似问题时,还是要用的<CFLOCK>。

20: EXCLUSIVE 和 READONLY两种锁定有什么区别?  
  <CFLOCK>支持两种类型的锁定,EXCLUSIVE 和 READONLY。EXCLUSIVE锁定完全防止其它代码的的访问。READONLY锁定并不是一种真正的锁定,只是给一端代码加上一个标记,表示只有当前没有被EXCLUSIVE锁定的时候才能执行。

21: 如何才能实现动态变量名呢?  
  窍门是先用""把变量名围起来,然后把要作为动态变量名的部分用##围起来。可以看看下面的例子。
<!--- 设置变量 i 值为 1 --->
<CFSET i=1>
<!--- 创建一个动态的变量名product1--->
<CFSET "product#i#"="apple">
<!--- 显示product1的值--->
<CFOUTPUT>#product1#</CFOUTPUT>
22: 如何得到一个拥有动态变量名的变量的值?  
可以用Evaluate() 函数动态的构造变量名,请看下面的例子。
<!--- Set i --->
<CFSET i=1>
<!--- Display product1 variable --->
<CFOUTPUT>#Evaluate("product#i#")#</CFOUTPUT>
23: 在获得一个Query查询结果之后,如何得到它的字段列表?  
  每个Query查询结果都带有一个叫columnlist的变量,可以用来获得Query的字段列表.如 :queryname.columnlist

24: 如何获得接收到的Form或URL变量的列表?  
  在ColdFusion中,接收到的Form或URL变量都是以ColdFusion structures 变量的结构存在的,可以用ColdFusion提供的structures的一些函数来访问处理它们。当然也可以用<CFLOOP>来循环其中的每一个元素。
  
25: 如何直接的访问query数据中的某一个数据?  
  在ColdFusion中,query其实就是sturcture,每条记录就是一个数组。要直接的访问query中的某一条记录中的某一个数据,可以用这种方式:#query.column[row]#。如:想要得到query “products”中的“price”字段的第五条记录,可以用这种表达是式:#products.price[5]#。 这种方法在一些情况下非常有用,如用<CFLOOP>循环处理一个query。

26: 如何才能用ColdFusion生成可打印的PDF文档?  
  ColdFusion目前还不能直接生成PDF文档。但有一些第三方的产品可以用来实现这些功能。如ActivePDF http://www.activepdf.com/) 


 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值