- ASP.NET从入门到精通(第5版)
- 明日科技
- 1278字
- 2021-03-31 00:47:54
2.3 Application对象
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P51_11204.jpg?sign=1739203592-YoJ90s1LsMeZ7Uqf3pVHjhqbF68IPUSo-0-202f920e201411aaf87fa4ecb011340b)
视频讲解
2.3.1 Application对象概述
Application对象用于共享应用程序级信息,即多个用户共享一个Application对象。
在第一个用户请求ASP.NET文件时,将启动应用程序并创建Application对象。一旦Application对象被创建,它就可以共享和管理整个应用程序的信息。在应用程序关闭之前,Application对象将一直存在。所以,Application对象是用于启动和管理ASP.NET应用程序的主要对象。
2.3.2 Application对象的常用集合、属性和方法
Application对象的常用集合及说明如表2.6所示。
表2.6 Application对象的常用集合及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T51_11217.jpg?sign=1739203592-vXAfca2QkrExK3f6pz0AhnUqwyjpaJCL-0-65c3e9580eef027373a0c9c5b3f29c06)
Application对象的常用属性及说明如表2.7所示。
表2.7 Application对象的常用属性及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T52_14399.jpg?sign=1739203592-tlmKZCQReut42UU3yBe5D4uI43mkqK4T-0-ebe49ef1d49c3933f2c4d57a248d909e)
Application对象的常用方法及说明如表2.8所示。
表2.8 Application对象的常用方法及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T52_86401.jpg?sign=1739203592-m6OC9lkNK5LQOTluyiXl5rVBPfqcmJXG-0-4b77188b482cf133db7a65d551078a94)
2.3.3 使用Application对象存储和读取全局变量
使Application对象存储和维护某些值,就要通过定义变量来完成。Application对象定义的变量为应用程序级变量,即全局变量。变量可以在Global.asax文件或aspx页面中进行声明。语法如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P52_86405.jpg?sign=1739203592-UhbmpBfWFVtm6mgBsuGIIIwtwUqm7lbS-0-6db6bb27227a75b8b68fe0e1b1cb95c7)
其中,varName是变量名。例如:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P52_86406.jpg?sign=1739203592-iLJEMxAAjRinF4Dr46NgWKLJfpV7LLwF-0-36a95d3f571817d74a9ca1456181e0c2)
注意
由于应用程序中的所有页面都可以访问应用程序变量,所以为了确保数据的一致性,必须对Application对象加锁。
2.3.4 设计一个访问计数器
访问计数器主要用来记录应用程序曾经被访问次数的组件。用户可以通过Application对象和Session对象实现这一功能。下面就通过一个示例进行介绍。
【例2.6】访问计数器。(示例位置:mr\TM\02\06)
下面的示例主要是在Global.asax文件中对访问人数进行统计,并在Default.aspx文件中将统计结果显示出来。执行程序,示例运行结果如图2.7所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P53_11224.jpg?sign=1739203592-g4o8BgWMIZeOJ1XXrGxJkK9bL11jiYMx-0-f596046ec0644af1632a05867e9c1c0e)
图2.7 访问计数器
程序实现的主要步骤如下。
(1)新建一个网站,添加一个全局应用程序类(即Global.asax文件),在该文件的Application_Start事件中将访问数初始化为0,代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P53_86409.jpg?sign=1739203592-6BUR7U5cSUH1ceq7A77M2NMYDOmdTLap-0-9c61bcf578250bb6216d5f6519bc3840)
当有新的用户访问网站时,将建立一个新的Session对象,并在Session对象的Session_Start事件中对Application对象加锁,以防止因为多个用户同时访问页面造成并行,同时将访问人数加1;当用户退出该网站时,将关闭该用户的Session对象,同时对Application对象加锁,然后将访问人数减1。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P53_86410.jpg?sign=1739203592-40hDpHA8y7DI6ewBR11vcKENJUfhnQYp-0-7a9f14fe68e976891db95f4e9cfd4bf4)
(2)对Global.asax文件进行设置后,需要将访问人数在网站的默认主页Default.aspx中显示出来。在Default.aspx页面上添加了一个Label控件,用于显示访问人数。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P53_86411.jpg?sign=1739203592-Lm30J2BCMzvrDL8USRF7xGxTHO807L5F-0-0ef0a0971eb529156a71346055cc44a2)
2.3.5 聊天室
Application对象的一个典型的应用就是制作聊天室。下面就通过一个示例进行介绍。
【例2.7】聊天室。(示例位置:mr\TM\02\07)
下面的示例主要利用Application对象实现聊天室功能。执行程序,首先应该登录聊天室,在“用户名”文本框中输入登录用户的名称,再单击“登录”按钮进入聊天室。示例运行结果如图2.8所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P54_14427.jpg?sign=1739203592-qhoAm35iCojGjPNolUfkwHW14unSk8ZG-0-9f03919c52ceb811b751fd2b6ffcc296)
图2.8 聊天室
程序实现的主要步骤如下。
(1)新建一个网站,其主页默认为Default.aspx,将其重命名为Login.aspx。
(2)在该网站中添加Default.aspx、Content.aspx和List.aspx 3个Web页面,其中,Default.aspx页面为聊天室的主页面,Content.aspx页面用来显示用户的聊天信息,List.aspx页面用来显示在线用户的列表。
(3)在该网站中添加一个Global.asax全局程序集文件,用来初始化Application对象值。
该聊天室是使用Application对象实现的,在应用程序启动时,应在Application对象的Application_Start事件中将所有数据初始化。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P54_86413.jpg?sign=1739203592-ebzAIM4y8lV6g6Ok6fcQsVxgkn3O62tW-0-cbe57453f087442dbdba14b90c4f8ea3)
在聊天室主页面中单击“发送”按钮时,首先调用Application对象的Lock方法对所有Application对象进行锁定,然后判断当前聊天信息的记录数是否大于20。如果大于20,则清空聊天记录,并重新加载用户的聊天记录;否则,将把聊天内容、用户名和发信息时间保存在Application对象中。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P55_86416.jpg?sign=1739203592-2j6LY1Hyq55Fqap1TNfkGi38xttLWTPb-0-39220afc51acacb3cccbd91e79bc7443)
加载显示聊天信息页面Content.aspx时,从Application对象中读取保存的聊天信息,并将其显示在TextBox文本框中。Content.aspx页面的Page_Load事件代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P55_86417.jpg?sign=1739203592-xd0Y4oyKzfGK0g0dOquQhm7YCR9YxCue-0-ff4d57d588365555caf7386884677ee0)