-->ColdFusion 初级教程-->Application变量,Session变量,和Client变量的使用

ColdFusion

后页 前页
目录
北极星书库
Application变量,Session变量,和Client变量的使用


关于这三种变量在第二章已经有较为详细的讨论,在此仅作一些补充说明。


  1. Application.cfm是个标准的CFM文件,可以在Application.cfm中使用动态参数,根据查询结果或客户信息等动态地决定应用程序级的设置。

2. 这三种变量是在整个应用程序范围内存在的变量,此处“应用程序范围”指的是由同一个Application.cfm文件所确定的范围,应用程序根目录下的所有文件不一定都处在同一个“应用程序范围”。

3. 应注意这三种变量与缺省变量的区别。缺省变量也可以在整个应用程序范围中访问,但它是定义在Application.cfm中,靠每个文件都包含了Application.cfm而实现应用程序范围的共享,实际上在每个文件中,缺省变量都是局部变量,在一个文件中改变缺省变量的值不会影响到其它文件(除非使用了动态参数)。而Application变量,Session变量,和Client变量既使不定义在Application.cfm中,也可以在整个应用程序范围共享,在一个文件中改变这三种变量的值将会影响到整个应用程序。

4. 当使用CFLOCATION重定向一个文件时,Client.URLToken会自动被追加在URL后面。你可以在CFLOCATION标签中设置ADDTOKENNO来禁止这种追加。

5. 如果Client变量存储在系统注册表中,而你需要把它转移到另一台计算机中,你可以输出(export)注册表中的响应键值,然后输入(import)到目标计算机的系统注册表中。


Application变量,Session变量,和Client变量的比较


下表显示了Application变量,Session变量,和Client变量之间的关系:


变量种类

变量类型

应用程序名

客户IDs

Client Mgmt

Session Mgmt

过期时间

Client

可选

必需

必需

不需要

可选

Session

可选

必需

必需

必需

可选

Application

必需

不需要

不需要

不需要

可选


注意Session变量需要客户状态管理。


Application变量和Session变量的使用技巧


通常,Applicaton变量和Session变量用来存储不常需要写但经常需要读的信息。在多数情况下,这些变量的值只在应用程序启动时(Application变量)或Session建立时(Session变量)被赋值。然后变量的值在应用程序或Session的生存期内被多次引用。


使用Application变量时,要记住这些变量被一个应用程序的多个实例共享。因此,Application变量的值有可能会被同时运行的其它实例所覆盖。如果用这些变量存储“一次写入,多次读出”的信息,则不会出什么问题,否则应该考虑同一应用程序的不同实例之间的相互影响。(注:当多个客户同时链接到一个应用程序时,即产生该应用程序的多个“实例”。)


下面的例子演示了Application变量的使用。注意这段代码位于Application.cfm文件中,因为要执行对每个应用程序文件都需要的操作时,Application.cfm是最好的地方。在这个例子中,一个变量“Application.Initialized”被用来作为标志,指明应用程序变量是否已经初始化。


<!--- Declare a name for this application. This


automatically turns on application scope --->


<CFAPPLICATION NAME="AccountCheck">


<!--- Test to see if application variables have already been defined --->


<CFIF NOT IsDefined("application.initialized")>


<CFSET application.query1= ??? >


<CFSET application.query2= ??? >


<CFSET application.initialized=1>


</CFIF>


后页
前页
目录
北极星书库