Global.asa编程完全参考手册[1]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 hrstudy 的 blog

作者:未知  
global.asa 文件是一隹裳∥募没Э梢栽诟梦募兄付ㄊ录疟荆⑸骶哂谢峄昂陀τ贸绦蜃饔糜虻亩韵蟆8梦募哪谌?nbsp;
给用户显示的,而是用来存储事件信息和由应用程序全局使用的对象。该文件的名称必须是 global.asa 且必须存放在应用程序的 
根目录中。每个应用程序只能有一个 global.asa 文件。 

global.asa 文件只能包含如下内容: 

1.应用程序事件 

2.会话事件 

3.<object> 声明 

typelibrary 声明 
如果包含的脚本没有用 <script> 标记封装,或定义的对象没有会话或应用程序作用域,则服务器将返回错误。服务器会忽略已标 
记的但未被应用程序或会话事件使用的脚本以及文件中的 html 语句。 

可以用任何支持脚本的语言编写 global.asa 文件中包含的脚本。如果多个事件使用同一种脚本语言,就可以将它们组织在一组 
<script> 标记中。 

当用户保存对 global.asa 文件所做的更改时,在重新编译 global.asa 文件之前,服务器会结束处理当前应用程序的所有请 
求。在此期间,服务器拒绝其他请求并返回一个错误消息,说明正在重启动应用程序,不能处理请求。 

当用户当前的所有请求处理完之后,服务器对每个会话调用 session_onend 事件,删除所有活动会话,并调用 
application_onend 事件关闭应用程序,然后编译 global.asa 文件。接下来,用户的请求将启动应用程序并创建新的会话,触 
发 application_onstart 和 session_onstart 事件。 

但是,保存 global.asa 文件中所包含的文件的更改并不能使服务器重新编译 global.asa。为了让服务器识别包含文件的改动, 
必须再保存一下 global.asa 文件。 

在 global.asa 文件中声明的过程只能从一个或多个与 application_onstart、application_onend、session_onstart 和 
session_onend 事件相关的脚本中调用。在基于 asp 的应用程序中的 asp 页中,它们是不可用的。 

要在应用程序之间共享过程,可在单独的文件中声明这些过程,然后使用服务器端的包含 (ssi) 语句将该文件包含在调用该过程 
的 asp 页中。通常,包含文件的扩展名应为 .inc。 


基于 asp 的应用程序由在其根目录及其子目录中所有文件组成。应用程序在用户首次打开应用程序中的某一 web 页时启动,在服 
务器关闭时终止。应用程序有两个事件,即 application_onstart 事件和 application_onend 事件。 

用户可以在 global.asa 文件中为这些事件指定脚本。当应用程序启动时,服务器在 global.asa 文件中查找并处理 
application_onstart 事件脚本。当应用程序终止时,服务器处理 application_onend 事件脚本。 


1.application_onstart 
application_onstart 事件在首次创建新的会话(即 session_onstart 事件)之前发生。只有 application 和 server 内建 
对象是可用的。在 application_onstart 事件脚本中引用 session、request 或 response 对象将导致错误。 

语法 
<script language=scriptlanguage runat=server> sub application_onstart. . . end sub 

</script> 

参数 
scriptlanguage 
指定用于编写事件脚本的脚本语言。它可以是任何支持脚本编写的语言,例如 vb script 或 jscript。如果多个事件使用同一种 
脚本语言,就可以将它们组织在一个 <script> 标记下。 

2.application_onend 
application_onend 事件在应用程序退出时于 session_onend 事件之后发生,只有 application 和 server 内建对象可用。 

语法 
<script language=scriptlanguage runat=server> sub application_onend. . . end sub 

</script> 

参数 
scriptlanguage 
指定用于编写事件脚本的脚本编写语言。可以是任何一种支持脚本的语言,例如 vbscript 或 jscript。如果有多个事件使用同 
一种脚本编写语言,就可以将它们组织在一组 <script> 标记下。 
注释 
不能在 application_onend 脚本中调用 mappath 方法。 




当没有会话的用户在打开应用程序中的 web 页时,web 服务器会自动创建会话。当超时或服务器调用 abandon 方法时,服务器 
将终止该会话。 

会话有两个事件,即 session_onstart 事件和 session_onend 事件。 

可以在全局文件 global.asa 中为这两个事件指定脚本。当会话开始时,服务器在 global.asa 文件中查找并处理 
session_onstart 事件脚本。该脚本将在处理用户请求的 web 页之前处理。在会话结束时,服务器将处理 session_onend 事件 
脚本。 

1.session_onstart 
session_onstart 事件在服务器创建新会话时发生。服务器在执行请求的页之前先处理该脚本。session_onstart 事件是设置会 
话期变量的最佳时机,因为在访问任何页之前都会先设置它们。所有内建对象 (application、objectcontext、request、 
response、server 和 session) 都可以在 session_onstart 事件脚本中使用和引用。 

语法 
<script language=scriptlanguage runat=server> sub session_onstart. . .end sub 

</script> 

参数 
scriptlanguage 
指定用于编写事件脚本的脚本编写语言。可以是任何一种支持脚本的语言,例如 vbscript 或 jscript。如果有多个事件使用同 
一种脚本编写语言,就可以将它们组织在一组 <script> 标记下。 
示例 
尽管在 session_onstart 事件包含 redirect 或 end 方法调用的情况下 session 对象仍会保持,然而服务器将停止处理 
global.asa 文件并触发 session_onstart 事件的文件中的脚本。 

举一个例子,为了确保用户在打开某个特定的 web 页时始终启动一个会话,就可以在 session_onstart 事件中调用 redirect 
方法。当用户进入应用程序时,服务器将为用户创建一个会话并处理 session_onstart 事件脚本。您可以将脚本包含在该事件中 
以便检查用户打开的页是不是启动页,如果不是,就指示用户调用 response.redirect 方法启动网页。其演示如下例所示。 

<script runat=server language=vbscript> 
sub session_onstart 
 ' make sure that new users start on the correct 
 ' page of the asp application. 

 ' replace the value given to startpage below 
 ' with the virtual path to your application's 
 ' start page. 

 startpage = "/myapp/starthere.asp" 
 currentpage = request.servervariables("script_name") 

 ' do a case-insensitive compare, and if they 
 ' don't match, send the user to the start page. 
 if strcomp(currentpage,startpage,1) then  response.redirect(startpage) end ifend sub</script> 
上述示例只能在支持 cookie 的浏览器中运行。因为不支持 cookie 的浏览器不能返回 sessionid cookie,所以,每当用户请 
求 web 页时,服务器都会创建一个新会话。这样,对于每个请求,服务器都将处理 session_onstart 脚本并将用户重定向到启 
动页中。如果您要使用下面的脚本,建议您在启动页上放一个通知,告诉用户该站点要求支持 cookie 的浏览器。 

注释 
请注意,在 redirect 方法之后的任何 session_onstart 事件脚本都不会执行。因此,应该在您的事件脚本的最后再调用 
redirect 方法。其演示如下例所示。 

<script language=vbscript runat=server> 
sub session_onstart 
  ' session initialization script 
  response.redirect "http:/server/app/starthere.asp" 
end sub 
</script> 
在上面的例子中,redirect 方法在执行会话初始化脚本期间隐藏所有显示给客户的文字。 

2.session_onend 
session_onend 事件在会话被放弃或超时发生。在服务器内建对象中,只有 application、server 和 session 对象可用。 

语法 
<script language=scriptlanguage runat=server> sub session_onend. . . end sub 

</script> 

参数 
scriptlanguage 
指定用于编写事件脚本的脚本编写语言。可以是任一支持脚本编写的语言,例如 vbscript 或 jscript。如果有多个事件使用同 
一种脚本编写语言,则可以将其组织在一组 <script> 标记下。 
注释 
在 session_onend 脚本中不能调用 mappath 方法。 




<object> 声明 
用户可以在 global.asa 文件中通过使用扩展的 <object> 标记创建带有会话或应用程序作用域的对象。该标记是自包含的,且 
在任何 <script> 标记之外。 

在 global.asa 文件中声明的对象在服务器处理调用该对象之前是不会创建的。这样就只会创建必需的对象,从而节约了资源。 

服务器对带有应用程序作用域参数创建的对象不调用 onstartpage 和 onendpage 方法。 

语法 
<object runat=server scope=scope id=identifier {progid="progid"¦classid="classid"}>. . . 

</object> 

参数 
scope 
指定对象的作用域。在 global.asa 文件中,scope 将被设置为 session 或 application。 

identifier 
指定对象实例的名称。 

progid 
与类标识相关的标识。无论 progid 还是 classid 都必须在 <object> 中指定。progid 的格式为 [vendor.]component 
[.version]。 

classid 
指定 com 类对象的唯一标识。 无论 progid 还是 classid 都必须在 <object> 中指定。 
示例 
下面的第一个示例使用 progid 参数创建一个对象,其会话作用域名为 myconnection。第二个示例使用 classid 参数。 

<object runat=server scope=session id=myconnection progid="adodb.connection"> 
rem object script 
</object> 

<object runat=server scope=session id=myconnection classid="clsid:8ad3067a-b3fc-11cf-a560-00a0c9081c21"> 
rem object script 
</object> 

注释 
在 global.asa 文件中声明的对象可被应用程序中的任何脚本使用。例如,在声明了下列对象的情况下。 

---global.asa--- 
<object runat=server scope=session id=myad progid="mswc.adrotator"> 
</object> 

可以从应用程序中的任何一页引用 myad 对象: 

---some.asp--- 
<%= myad.getadvertisement("/ads/adrot.txt") %> 



typelibrary 声明 

activex 组件常常要描述类型库中该组件支持的常量。类型库是一个文件,其中包含有关 activex 组件所支持的对象和类型的信 
息。如果用户的 web 应用程序依赖于已在类型库中声明了类型的 activex 对象,就可以在 global.asa 文件中声明其类型。这 
样做以后,就可以在应用程序范围内从任何脚本引用已在类型库中声明了的数据类型。 

有关在 asp 中使用常量的详细信息,请参阅“使用变量和常量”。 

语法 
<!--metadata type="typelib" 
file="file" 
uuid="typelibraryuuid" 
version="majorversionnumber.minorversionnumber" 
lcid="localeid" 
--> 
参数 
file 
类型库的绝对路径。如果提供了该参数和 typelibraryuuid 参数,则 file 将用于标识类型库。file 参数和 
typelibraryuuid 参数都是必选项。 

typelibraryuuid 

本文关键:Global.asa编程完全参考手册
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top