China°be 第3章ASP应用程序与会话 在前面的章节中介绍了ASP提供的访问一个客户请求和产生响应的方法,本章将讨论ASP 的另两个对象。就是 Application和 Session对象。这两个对象不是直接地与请求和响应的管理 有关,而是更多地与ASP网页运行环境的管理相关 与建立Web站点或Web应用程序有关的共同问题之一,是使用HTTP协议时没有状态。状 态提供了与一个指定用户有关的变量值、对象和其他资源,并且应用程序中的任意例程都能 使用它:以一种像VB或C++这样的程序设计语言编写一般的基于客户的应用程序时,使用状 态可以完成一些相应的工作。然而,web并不提供这种能力。在本章中,读者将看到为什么 和如何避免这个问题 本章还涉及到一些术语和技术问题。它迄今为止,本书中已经简单地讨论了“Web应用 程序”,但没有真正确切地理解或准确定义它们到底是什么。本书也涉及到了“用户会话”, 也没有相应的比较完全的描述。前面有意地省略这方面的内容,因为它们与ASP的应用程序 和会话密切相关。下面将介绍ASP的 Application和 Session对象 本章研究的主要内容: Web应用程序是什么,以及它们如何与 ASP Application对象相联系。 用户会话是什么,以及它们如何与 ASP Session对象相联系 ·ASP如何自动地创建和管理应用程序和会话 Application和 Session对象提供的功能 如何把 Application和 Session对象放入ASP网页中 首先研究整个内容的核心问题:状态。 3.1Web上的状态管理 许多开发人员把应用程序传送到Web之前从来没有考虑状态的概念。正如前面说过的 web是一个无状态的环境。因此应该探讨一下状态是什么,了解能够避免产生问题的方法 3.1.1状态的准确定义 在单用户程序中,创建一个可执行的应用程序时,例如使用VB建立的一个,exe文件,可 以声明一个全局(或 Public)变量,然后在代码中任何地方可对其进行访问。在应用程序运行的 所有时刻,该变量的值一直是有效,并且是可访问的 对于一个传统的客户机/服务器解决方案,例如一个基于客户机的应用程序对一个基于服 务器的数据库引擎进行访问的系统,每个客户端建立了一个与服务器和数据库应用程序的连 接。这种连接通常是通过验证用户的方法来建立的。 验证过程是典型的识别用户身份的过程,通过一个用户名和口令组合来证明是 否为合法的用户
下载 第3章 ASP应用程序与会话 在前面的章节中介绍了A S P提供的访问一个客户请求和产生响应的方法,本章将讨论 A S P 的另两个对象。就是 A p p l i c a t i o n和S e s s i o n对象。这两个对象不是直接地与请求和响应的管理 有关,而是更多地与A S P网页运行环境的管理相关。 与建立We b站点或We b应用程序有关的共同问题之一,是使用 H T T P协议时没有状态。状 态提供了与一个指定用户有关的变量值、对象和其他资源,并且应用程序中的任意例程都能 使用它;以一种像 V B或C + +这样的程序设计语言编写一般的基于客户的应用程序时,使用状 态可以完成一些相应的工作。然而, We b并不提供这种能力。在本章中,读者将看到为什么 和如何避免这个问题。 本章还涉及到一些术语和技术问题。它迄今为止,本书中已经简单地讨论了“ We b应用 程序”,但没有真正确切地理解或准确定义它们到底是什么。本书也涉及到了“用户会话”, 也没有相应的比较完全的描述。前面有意地省略这方面的内容,因为它们与 A S P的应用程序 和会话密切相关。下面将介绍 A S P的A p p l i c a t i o n和S e s s i o n对象。 本章研究的主要内容: • We b应用程序是什么,以及它们如何与 ASP Application对象相联系。 • 用户会话是什么,以及它们如何与 ASP Session对象相联系。 • ASP如何自动地创建和管理应用程序和会话。 • Application和S e s s i o n对象提供的功能。 • 如何把A p p l i c a t i o n和S e s s i o n对象放入A S P网页中。 首先研究整个内容的核心问题:状态。 3.1 We b上的状态管理 许多开发人员把应用程序传送到 We b之前从来没有考虑状态的概念。正如前面说过的, We b是一个无状态的环境。因此应该探讨一下状态是什么,了解能够避免产生问题的方法。 3.1.1 状态的准确定义 在单用户程序中,创建一个可执行的应用程序时,例如使用 V B建立的一个. e x e文件,可 以声明一个全局(或P u b l i c )变量,然后在代码中任何地方可对其进行访问。在应用程序运行的 所有时刻,该变量的值一直是有效,并且是可访问的。 对于一个传统的客户机 /服务器解决方案,例如一个基于客户机的应用程序对一个基于服 务器的数据库引擎进行访问的系统,每个客户端建立了一个与服务器和数据库应用程序的连 接。这种连接通常是通过验证用户的方法来建立的。 验证过程是典型的识别用户身份的过程,通过一个用户名和口令组合来证明是 否为合法的用户
第3章ASP应用程序与会话71 旦通过验证,在客户端和基于服务器的应用程序之间就建立了连接,该连接在用户使 用该应用程序的所有时间内一直保持有效。当用户注册到本地 Windows2000服务器上时,这 切便会发生。无论何时,管理员使用“ Active Directory Users and Computers”实用程序(单 击“ Start”菜单的“ Administrative Tools”选项中的“ Directory Management”项)都可以观察 到活动的用户连接。这个过程在许多系统中都相同,例如 Microsoft SQL Server 这种永久的连接意味着:当用户发送指令或请求到服务器上时,服务器会很容易地识别 每个用户。同样服务器的响应或任何其他用户的信息也能直接返回用户。要进一步指出的是 服务器可以比较容易地存储与每个客户相关的值和信息,并在需要的时候提供给相应的客户。 当然,服务器应用程序能够拥有主全局变量,以便于用户在需要的时候进行访问 这种识别每个客户端的请求并在内存中保存相关用户的值的能力构成状态。可以认为状 态代表应用程序的值、环境以及用户的内部变量,并贯穿于应用程序和用户连接的整个过程 3.1.2状态的重要性 如果打算创建与用户进行交互的基于Web站点的应用程序,而不是仅显示独立页面的Web 网站,必须能够为每个用户提供独立的状态。这可能只是记住他们的名字,也可能要为每个 用户存储对象引用或不同的记录集。如果不能这样做,ASP网页就不能做更多的事情,因为 该页面执行完成时,页面中的变量和其他相关资料都破坏了。当用户请求下一个页面时,这 个页面提供的所有信息将全部失去 因此,需要找到一种方法,保存每个访问者的状态。能够存储对所有用户而言的全局 是非常重要。例如,一个Web风格的访问或页面点击计数器,它不为每个用户提供自己的计 数器,用户们通常想要看到访问者的总数,而不仅仅是他们自己访问的次数。访问者的数目 需要与应用程序级状态一起存储,而不是与用户级状态一起存储 这不是一个刚出现的问题,自从商用站点占据了Web,就已经存在,甚至更早些。所以 已有许多在web上存储状态的传统的解决方案。Web站点管理员想要了解访问者以前是否曾访 问过他们的网站,如果访问过,访问过多少次?是否经常访问?还定期访问其他什么网站等 样可以更好地制定其广告目标。所有这些都要求一种方法来存储有关用户在访问时所产生 的网页请求或每次访问间的信息。 3.13在Web上创建状态 在页面请求和站点访问之间提供状态常用的方法是通过 cookie。我们在前面的章节中已经 看到,如何在客户端的计算机中存放相应的值,这些值与每个页面请求一起发送给对此 cookie 有效的域。通过用ASP检查和更新 cookie,在某种程度上能够保持一个状态。可以使用所包含 的信息来识别用户,然后把用户连接到一个已存储相应值的集合 例如,可以检测一个用户请求是否包含一个站点指定的 如果不包含,则为该用户 配一个某种类型的标识,指明一个数量,并存储在带有一个长有效期的 cookie中。以后该用 户对这个站点的每一次访问,都能够检测到 cookie并更新所包含的信息。同时可以收集有关访 问的次数和持续时间的数据,并存储在服务器上,以备将来使用 但是,如果用户转移到另一个计算机,或删除了 cookie,或者他们的浏览器拒绝接收发送 给他们的 cookie,会发生什么事情呢?在这种情况下,不能维持状态,因为下一次不能识别他
一旦通过验证,在客户端和基于服务器的应用程序之间就建立了连接,该连接在用户使 用该应用程序的所有时间内一直保持有效。当用户注册到本地 Windows 2000服务器上时,这 一切便会发生。无论何时,管理员使用“ Active Directory Users and Computers”实用程序(单 击“S t a r t”菜单的“Administrative To o l s”选项中的“Directory Management”项)都可以观察 到活动的用户连接。这个过程在许多系统中都相同,例如 Microsoft SQL Server。 这种永久的连接意味着:当用户发送指令或请求到服务器上时,服务器会很容易地识别 每个用户。同样服务器的响应或任何其他用户的信息也能直接返回用户。要进一步指出的是 服务器可以比较容易地存储与每个客户相关的值和信息,并在需要的时候提供给相应的客户。 当然,服务器应用程序能够拥有主全局变量,以便于用户在需要的时候进行访问。 这种识别每个客户端的请求并在内存中保存相关用户的值的能力构成状态。可以认为状 态代表应用程序的值、环境以及用户的内部变量,并贯穿于应用程序和用户连接的整个过程。 3.1.2 状态的重要性 如果打算创建与用户进行交互的基于 We b站点的应用程序,而不是仅显示独立页面的 We b 网站,必须能够为每个用户提供独立的状态。这可能只是记住他们的名字,也可能要为每个 用户存储对象引用或不同的记录集。如果不能这样做, A S P网页就不能做更多的事情,因为 该页面执行完成时,页面中的变量和其他相关资料都破坏了。当用户请求下一个页面时,这 个页面提供的所有信息将全部失去。 因此,需要找到一种方法,保存每个访问者的状态。能够存储对所有用户而言的全局值 是非常重要。例如,一个 We b风格的访问或页面点击计数器,它不为每个用户提供自己的计 数器,用户们通常想要看到访问者的总数,而不仅仅是他们自己访问的次数。访问者的数目 需要与应用程序级状态一起存储,而不是与用户级状态一起存储。 这不是一个刚出现的问题,自从商用站点占据了 We b,就已经存在,甚至更早些。所以 已有许多在We b上存储状态的传统的解决方案。 We b站点管理员想要了解访问者以前是否曾访 问过他们的网站,如果访问过,访问过多少次?是否经常访问?还定期访问其他什么网站等。 这样可以更好地制定其广告目标。所有这些都要求一种方法来存储有关用户在访问时所产生 的网页请求或每次访问间的信息。 3.1.3 在We b上创建状态 在页面请求和站点访问之间提供状态常用的方法是通过 c o o k i e。我们在前面的章节中已经 看到,如何在客户端的计算机中存放相应的值,这些值与每个页面请求一起发送给对此 c o o k i e 有效的域。通过用A S P检查和更新c o o k i e,在某种程度上能够保持一个状态。可以使用所包含 的信息来识别用户,然后把用户连接到一个已存储相应值的集合。 例如,可以检测一个用户请求是否包含一个站点指定的 c o o k i e。如果不包含,则为该用户 分配一个某种类型的标识,指明一个数量,并存储在带有一个长有效期的 c o o k i e中。以后该用 户对这个站点的每一次访问,都能够检测到 c o o k i e并更新所包含的信息。同时可以收集有关访 问的次数和持续时间的数据,并存储在服务器上,以备将来使用。 但是,如果用户转移到另一个计算机,或删除了 c o o k i e,或者他们的浏览器拒绝接收发送 给他们的c o o k i e,会发生什么事情呢?在这种情况下,不能维持状态,因为下一次不能识别他 第 3章 A S P应用程序与会话计计71 下载
ASP3高级编程 China.pub. coM 们现在,Web上有许多 cookie,大多数人会接受它们,而不加理会。如果打开浏览器中的 Warn before accepting cookies”选项,接着漫游几个大的站点,你就会明白其中的含意。 1.匿名访问者与授权的访问者 如果认为 cookie是一个有点草率的解决方案,可以使用更直接的方法。许多站点采用的 种方法是,在访问者点击一个站点时,或者点击一个要求验证身份的页面时,弹出一个进行 登录的对话框。访问者首先必须进行注册,获得一个某种类型的用户名/口令的组合,才能允 许访问相应的站点或页面 为了证实访问者是一个已知的并且合法的用户,在访问者的计算机上放置的一个 cookie, 它或者保存注册的详细数据,或者是一把表明已验证过身份的“钥匙(key)”。同时,访问者的 详细数据永久地保存在服务器上,准备再次访问时使用。如果访问者的浏览器中有了这样一 个 cookie,他就可以自由地访问该网站,因为已经验证过了 如果 cookie没有有效期限( Expires), cookie的值在关闭浏览器时自动消失,在下一次访问 时必须重新登册和再次验证。当然,如果拒绝接收 cookie或删除了 cookie,就只能再次得到登 册对话框。这样的话,如果不被识别,就不能访问该站点。 通过强制用户就像登册到自己的网络一样登册到Web服务器, Windows2000整 体安全性能为IS提供更强和更安全的验证功能。但是,这只能与 Internet Explorer 3.0和之上版本的浏览器一起工作。IS也可以使用 BASIC验证允许非 Micros浏览器 注册Web服务器 2.不再有匿名访问者 在 IIS Web服务器上使用ASP时,除非用户离开该站点到另一个网站或者关闭了浏览器 否则能在当前会话中跟踪用户。在本章的后面,将看到如何使用这个功能来标识一个访问者、 存储用户的本地信息和提供状态。下面与已经讨论过的解决方案相比较,讨论其工作方式。 ASP和IS共同提出了一个用户会话的概念,通过 ASP Session对象进行交互。在每个访问 者第一次访问服务器上的一个ASP网页时,为他创建一个新的并且独立的会话对象,分配给 该会话一个会话标识号,并把包含会话标识符的特殊加密版本的一个 cookie发送给客户 cookie的路径(参看前面的章节有关 cookie属性的描述)设置为运行在服务器上的ASP应用 程序的根路径。这很可能是缺省的Web网站的根目录(即“/”),但也可能会是另外一个值(稍 后会看到)。在 cookie中没有提供 Expires值,所以当浏览器关闭时, cookie值也就消失。 每当这个用户访问这个ASP网页,ASP都会查找这个 cookie命名为 ASPSESSIONIDxxxrx, 其中每个x是一个字母字符。从第2章图2-7所示的Servervariables集合,能够在HTTP报头中看 到它。这里高亮地显示 ASP cookie,如图3-1所示 The Request. ServerVariables Collection Servervariables Examples Ll_Http=Http_AccEpt: application/msword, application/vnd. ms-excel, application/nd. ms-powe age/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/-comet"/http-accept_lan gb Http_conNeCtion: Keep-alive hTtp-hOst: wroxbox HttP_rEfErer:htTp: //wroxbox/testrequest/request form. asp AstDatE=6%2F4%2f99+10%3a10% la/4.0(compatible Msie5.0;Windows98)http_cooKie:Visitcount=vistts=3al 3A13+AM; TimedCookie=TimedExample: ASoS 图3-1显示的 cookie
们现在, We b上有许多 c o o k i e,大多数人会接受它们,而不加理会。如果打开浏览器中的 “Warn before accepting cookies”选项,接着漫游几个大的站点,你就会明白其中的含意。 1. 匿名访问者与授权的访问者 如果认为c o o k i e是一个有点草率的解决方案,可以使用更直接的方法。许多站点采用的一 种方法是,在访问者点击一个站点时,或者点击一个要求验证身份的页面时,弹出一个进行 登录的对话框。访问者首先必须进行注册,获得一个某种类型的用户名 /口令的组合,才能允 许访问相应的站点或页面。 为了证实访问者是一个已知的并且合法的用户,在访问者的计算机上放置的一个 c o o k i e, 它或者保存注册的详细数据,或者是一把表明已验证过身份的“钥匙 ( k e y )”。同时,访问者的 详细数据永久地保存在服务器上,准备再次访问时使用。如果访问者的浏览器中有了这样一 个c o o k i e,他就可以自由地访问该网站,因为已经验证过了。 如果c o o k i e没有有效期限( E x p i r e s ),c o o k i e的值在关闭浏览器时自动消失,在下一次访问 时必须重新登册和再次验证。当然,如果拒绝接收 c o o k i e或删除了c o o k i e,就只能再次得到登 册对话框。这样的话,如果不被识别,就不能访问该站点。 通过强制用户就像登册到自己的网络一样登册到 We b服务器,Windows 2000整 体安全性能为 I I S提供更强和更安全的验证功能。但是,这只能与 Internet Explorer 3 . 0和之上版本的浏览器一起工作。 I I S也可以使用B A S I C验证允许非M i c r o s o f t浏览器 注册We b服务器。 2. 不再有匿名访问者 在IIS We b服务器上使用 A S P时,除非用户离开该站点到另一个网站或者关闭了浏览器, 否则能在当前会话中跟踪用户。在本章的后面,将看到如何使用这个功能来标识一个访问者、 存储用户的本地信息和提供状态。下面与已经讨论过的解决方案相比较,讨论其工作方式。 A S P和I I S共同提出了一个用户会话的概念,通过 ASP Session对象进行交互。在每个访问 者第一次访问服务器上的一个 A S P网页时,为他创建一个新的并且独立的会话对象,分配给 该会话一个会话标识号,并把包含会话标识符的特殊加密版本的一个 c o o k i e发送给客户。 c o o k i e的路径(参看前面的章节有关 c o o k i e属性的描述)设置为运行在服务器上的 A S P应用 程序的根路径。这很可能是缺省的 We b网站的根目录(即“/”),但也可能会是另外一个值 (稍 后会看到)。在c o o k i e中没有提供E x p i r e s值,所以当浏览器关闭时, c o o k i e值也就消失。 每当这个用户访问这个A S P网页,A S P都会查找这个c o o k i e。命名为A S P S E S S I O N I Dx x x x x x x x, 其中每个x是一个字母字符。从第 2章图2 - 7所示的S e r v e r Va r i a b l e s集合,能够在H T T P报头中看 到它。这里高亮地显示ASP cookie,如图3 - 1所示。 图3-1 显示的cookie 值 72计计ASP 3 高级编程 下载
第3章ASP应用程序与会话 73 下载 但是,这个 cookie不会出现在 Request. Cookies或 Response. Cookies集合中,ASP把它隐藏 起来,但仍保存在浏览器上。对于每个ASP网页的请求,ASP都要查看该值。这个 cookie包含 的值,指明了这个用户的会话。因此,相应的 Session对象(该对象在内存中已被处理,并且一 直包含所有在前一页面请求过程中进行操作的值)的内容可以移交给ASP网页中的脚本。 当然,如前所述,如果客户浏览器不接收或不支持这些 cookie,这个处理将失败。在这种 情况下,不能创建ASP会话,对这个访问者的状态也不进行自动维护 32Web应用程序的定义 前面的章节中已经多次使用过Web应用程序( Web Application)术语,所指的既不是一个真 正意义上的Web网站,又不是一个传统的应用程序。换句话说,而是认为它是一些Web网页和 用来完成某些任务的其他资源的一个集合。它隐含这样一层意思:有一个预定义的路线贯穿 于网页之中,用户可做出选择或提供信息使任务能够完成。 例如,一个在线商店,你为了购买货物,进行反复的观察和选择,浏览一系列网页,收 集所需要的信息,支付相应的费用,最后发出定单。也可能是一个“软件升级向导”,指导用 户完成下载和安装新软件的过程,或者可能是一个基于 Intranet的报价单或销售报告的生成工 具 所有这些不同于“标准”的Web网站,一般的Web站点使用一系列菜单或导航栏以预先未 定义的路径漫游该站点。但是一个Web应用程序远不只是受控制的导航器。自由地漫游于 个Web网站时,可以进行无状态的和匿名的访问,但Web应用程序一般不接受 321ASP应用程序的定义 上述内容可以认为是术语“web应用程序”的一个合理的一般定义,但遗憾的是,在谈 论有关“ASP应用”时,仅这些还不够。回答什么是“Web应用”可以是主观的,而回答什 是“ASP应用”则需要从技术上的解释。在ASP中术语“应用程序”有自己特定的含义,在讨 论如何实现之前,弄懂这个概念至关重要。 ASP应用程序与两个主要的内容有关 ·全局范围的规定,具有一个全局可访问的变量存储区域 通过COM+与∏S的集成,可更好地管理组件 下面讨论这些内容。第二个内容涉及到其他ASP对象,其覆盖范围相当广泛。在下一章 研究 ASP Server对象时,将对这部分内容进行详细地讨论 提供Web应用程序的全局范围 ASP提供一个 Application对象,基本上与前面讨论的 Session对象相当。但是,这是在应 用程序层而不是在用户层。换句话说,该对象是全局的,不是对单独用户的,而是对应用程 序的所有用户,其作用域不限制为单独用户的访问。这与在一个正常的可执行应用程序中的 全局(或 Public)变量相同。 Application对象可用于在全局环境中存储变量和信息(即状态),该 应用程序内的任何ASP网页中运行的脚本都可访问这些值,而不管是哪个访问者发出的请求 但是,这没有回答主要问题:什么是一个ASP应用程序?为此,需要研究ASP内部的一 情况。 当用户请求一个ASP网页时,IS通过实例化asp.d(用来实现ASP)创建一个环境(如第1章
但是,这个c o o k i e不会出现在R e q u e s t . C o o k i e s或R e s p o n s e . C o o k i e s集合中,A S P把它隐藏 起来,但仍保存在浏览器上。对于每个 A S P网页的请求,A S P都要查看该值。这个c o o k i e包含 的值,指明了这个用户的会话。因此,相应的 S e s s i o n对象(该对象在内存中已被处理,并且一 直包含所有在前一页面请求过程中进行操作的值 )的内容可以移交给A S P网页中的脚本。 当然,如前所述,如果客户浏览器不接收或不支持这些 c o o k i e,这个处理将失败。在这种 情况下,不能创建A S P会话,对这个访问者的状态也不进行自动维护。 3.2 We b应用程序的定义 前面的章节中已经多次使用过 We b应用程序( Web Application)术语,所指的既不是一个真 正意义上的We b网站,又不是一个传统的应用程序。换句话说,而是认为它是一些 We b网页和 用来完成某些任务的其他资源的一个集合。它隐含这样一层意思:有一个预定义的路线贯穿 于网页之中,用户可做出选择或提供信息使任务能够完成。 例如,一个在线商店,你为了购买货物,进行反复的观察和选择,浏览一系列网页,收 集所需要的信息,支付相应的费用,最后发出定单。也可能是一个“软件升级向导”,指导用 户完成下载和安装新软件的过程,或者可能是一个基于 I n t r a n e t的报价单或销售报告的生成工 具。 所有这些不同于“标准”的 We b网站,一般的We b站点使用一系列菜单或导航栏以预先未 定义的路径漫游该站点。但是一个 We b应用程序远不只是受控制的导航器。自由地漫游于一 个We b网站时,可以进行无状态的和匿名的访问,但 We b应用程序一般不接受。 3.2.1 ASP应用程序的定义 上述内容可以认为是术语“ We b应用程序”的一个合理的一般定义,但遗憾的是,在谈 论有关“A S P应用”时,仅这些还不够。回答什么是“ We b应用”可以是主观的,而回答什么 是“A S P应用”则需要从技术上的解释。在 A S P中术语“应用程序”有自己特定的含义,在讨 论如何实现之前,弄懂这个概念至关重要。 A S P应用程序与两个主要的内容有关: • 全局范围的规定,具有一个全局可访问的变量存储区域。 • 通过C O M +与I I S的集成,可更好地管理组件。 下面讨论这些内容。第二个内容涉及到其他 A S P对象,其覆盖范围相当广泛。在下一章 研究ASP Server对象时,将对这部分内容进行详细地讨论。 1. 提供We b应用程序的全局范围 A S P提供一个A p p l i c a t i o n对象,基本上与前面讨论的 S e s s i o n对象相当。但是,这是在应 用程序层而不是在用户层。换句话说,该对象是全局的,不是对单独用户的,而是对应用程 序的所有用户,其作用域不限制为单独用户的访问。这与在一个正常的可执行应用程序中的 全局(或P u b l i c )变量相同。A p p l i c a t i o n对象可用于在全局环境中存储变量和信息 (即状态),该 应用程序内的任何A S P网页中运行的脚本都可访问这些值,而不管是哪个访问者发出的请求。 但是,这没有回答主要问题:什么是一个 A S P应用程序?为此,需要研究 A S P内部的一些 情况。 当用户请求一个A S P网页时,I I S通过实例化a s p . d l l (用来实现A S P )创建一个环境(如第1章 第 3章 A S P应用程序与会话计计73 下载
74sp3高编程 Chinapub.com 下 所述)。将该页面解释为服务器端脚本,相应的脚本引擎的实例用来执行该脚本。 实例化的aspd初始事件启动一个ASP应用程序,创建一个 Application对象。然后,为这 个用户启动一个会话,并创建单独的 Session对象。当更多的会话启动时,这个 Application对 象保留在作用域中(即已经实例化和可用)。一旦最后保持活动的会话结束,该应用程序就结束, 并取消相应的 Application对象。因此,当站点上还有活动会话时,将会有一个单独的 Application对象提供给所有用户使用。 (1)缺省的ASP应用 Windows2000在安装IS和ASP时,创建了一个缺省的Web站点。它被配置成一个ASP应 用程序,涉及到在 Properties对话框中针对站点根目录文件夹(缺省为C: \netpublWWWRoot) 的一些设置。图3-2所示是缺省Web站点的 Properties对话框的屏幕 A schon ta aHAL 厂L0mt reBorN chenry 图3-2缺省Web网站的 Properties对话框 涉及到ASP应用程序的文件之一是 global asa。这个文件用于定制应用程序行为的方式 放置在应用程序的根目录下,可用于该目录下的所有子目录。因此,如果它放置在整个web 站点的根目录下,则定义整个网站作为缺省的ASP应用程序的一部分 在本章后面有关应用程序和会话事件的部分中,将看到这个文件及其使用方法。 (2)ASP虚拟应用程序 如同在设置过程中创建缺省的应用程序一样,可以在该Web网站的任何子目录中创建属 于自己的ASP虚拟应用程序。这个应用程序包含作为“应用程序目录”而定义的目录中所有 的子目录。并且,这个目录和子文件夹也都是缺省应用程序的一部分,共享由缺省的 Application对象创建的全局空间 事实上,在缺省的应用程序中存储的所有变量在子目录中的应用程序中也都是可用的。 然而,如果该子目录应用程序中的一个ASP网页把一个值写入 Application对象,而 Application 对象与缺省(根)应用程序中已存在的一个值有相同的名字,那么,原先的值在子目录应用程序
所述)。将该页面解释为服务器端脚本,相应的脚本引擎的实例用来执行该脚本。 实例化的a s p . d l l初始事件启动一个 A S P应用程序,创建一个A p p l i c a t i o n对象。然后,为这 个用户启动一个会话,并创建单独的 S e s s i o n对象。当更多的会话启动时,这个 A p p l i c a t i o n对 象保留在作用域中(即已经实例化和可用)。一旦最后保持活动的会话结束,该应用程序就结束, 并取消相应的 A p p l i c a t i o n对象。因此,当站点上还有活动会话时,将会有一个单独的 A p p l i c a t i o n对象提供给所有用户使用。 (1) 缺省的A S P应用 Windows 2000在安装I I S和A S P时,创建了一个缺省的 We b站点。它被配置成一个 A S P应 用程序,涉及到在 P r o p e r t i e s对话框中针对站点根目录文件夹 (缺省为C:\ I n e t p u b \ W W W R o o t ) 的一些设置。图3 - 2所示是缺省We b站点的P r o p e r t i e s对话框的屏幕。 图3-2 缺省We b网站的P r o p e r t i e s对话框 涉及到A S P应用程序的文件之一是 g l o b a l . a s a。这个文件用于定制应用程序行为的方式。 放置在应用程序的根目录下,可用于该目录下的所有子目录。因此,如果它放置在整个 We b 站点的根目录下,则定义整个网站作为缺省的 A S P应用程序的一部分。 在本章后面有关应用程序和会话事件的部分中,将看到这个文件及其使用方法。 (2) ASP虚拟应用程序 如同在设置过程中创建缺省的应用程序一样,可以在该 We b网站的任何子目录中创建属 于自己的A S P虚拟应用程序。这个应用程序包含作为“应用程序目录”而定义的目录中所有 的子目录。并且,这个目录和子文件夹也都是缺省应用程序的一部分,共享由缺省的 A p p l i c a t i o n对象创建的全局空间。 事实上,在缺省的应用程序中存储的所有变量在子目录中的应用程序中也都是可用的。 然而,如果该子目录应用程序中的一个 A S P网页把一个值写入A p p l i c a t i o n对象,而A p p l i c a t i o n 对象与缺省(根)应用程序中已存在的一个值有相同的名字,那么,原先的值在子目录应用程序 74计计ASP 3 高级编程 下载