Application对象

11.1  Application对象

Application对象生存期和Web应用程序生存期一样长,生存期从Web应用程序网页被访问开始,HttpApplication类对象Application被自动创建,直到没有一个网页被访问时结束,Application对象被自动撤销。因此Application对象中的变量也有相同生存期,并且变量可以被Web应用程序中的所有网页访问。因此,可以在Application对象中建立一些全局的公用变量,由于存储在Application对象中的数值可以被应用程序的所有网页读取,所以Application对象的属性也适合在应用程序的网页之间传递信息。Application对象主要有以下用途:
l    存储记录在线人数或访问网站总人数的变量。
l    存储网站共用最新消息,供所有网页更新。
l    记录网站中个网页同一条广告被点击的次数或时间。
l    存储供所有网页使用的数据库数据。
l    不同用之间通讯,例如多用户聊天室,多用户游戏等
本节首先介绍Application对象的用法,然后介绍记录访问网站总人数的实现方法。

11.4.1      Application对象属性

虽然Application对象没有内置的属性,但我们可以使用以下句法设置用户定义的属性也可称为集合:Application("属性/集合名称")=值,例如,Application("MyVar")="Hello"。用以下语句取出数据:string s= Application("MyVar")。

11.4.1      方法

Application 对象有两个方法,它们都是用于处理多个用户对存储在Application中的数据进行写入的的同步问题。由于存储在Application对象中的数值可以被应用程序的所有网页读取,因此一个用户在修改这个变量时,不允许其它用户修改,这两个方法就是解决这个问题的。
l L ock 方 法
Lock 方法阻止其他客户修改存储在 Application 对象中的变量,以确保在同一时刻仅有一个客户可修改和存取 Application 变量。如果用户没有明确调用 Unlock 方法,则服务器将在 .asp 文件结束或超时后即解除对 Application 对象的锁定。
l Unlock 方法
和Lock方法相反,Unlock方法允许其他客户修改Application对象的属性。下例介绍一个计数器变量的使用方法。
Application.Lock;
Application["counter"]=(Int32)Application["counter"]+1;
Application.UnLock;

11.4.1      事件

l Application_OnStart事件
第一个浏览器访问Web应用程序网页时,产生的事件。
l Application_OnEnd事件
没有浏览器访问时Web应用程序网页时,产生的事件。
Application_OnStart和Application_OnEnd事件的处理过程必须写在global.asax文件之中。

11.4.2      例子:显示访问网站总人数

(1)  建立一个主页文件Default.aspx如下:
<html>
<script language="c#" runat=server>
void Page_Load(Object src,EventArgs e)
{
if(!Page.IsPostBack)//如果用户单击刷新按钮,计数器不加1
{
int num;
Application.Lock;
Application["counter"]=(Int32)Application["counter"]+1;
num=(Int)Application["counter"];
Application.UnLock;
label1.Text=Convert.ToString(num);
}
}
</script>
<body>
<form runat=server>
<asp:Label id="label1" Text="" runat=server></asp:Label>
<br>
<asp:HyperLink id="hLink1" NavigaterUrl="other.aspx" Target="_blank" runat=server>
单击此处转到e1.aspx,计数器不加1。
</asp:HyperLink >
</form>
</body>
</html>
(2)  建立other.aspx网页文件如下:
<html>
<script language="c#" runat=server>
void Page_Load(Object src,EventArgs e)
{
Int num=(Int)Application["counter"];
label1.Text=Convert.ToString(num);
}
}
</script>
<body>
<form runat=server>
<asp:Label id="label1" Text="" runat=server></asp:Label>
<br>
<asp:HyperLink id="hLink1" NavigaterUrl="default.aspx" runat=server>
单击此处转到dault.aspx,计数器不加1。
</asp:HyperLink >
</form>
</body>
</html>
(3)  建立global.asax文件如下:
<script language="c#" runat=server>
void Application_OnStart(Object src,EventArgs e)
{
Application.Add("counter",0);
}
</script>
(4)  三个文件都存到宿主目录中,在浏览器重输入URL地址:http://Localhost/,查看显示的计数器数值,单击刷新按钮,查看显示的计数器数值是否改变,转到Other.aspx网页,在转回dault.aspx网页,查看显示的计数器数值是否改变。关闭所有网页,在打开default.aspx网页,显示的计数器值从0开始,这是因为没有网页访问网站时,Application对象被自动撤销。在打开新网页,产生Application_OnStart事件,将counter值为0。为了解决此问题,可以建立一个文件,记录访问网站总人数,初值为0,Application_OnStart事件函数中,从文件取出已访问网站总人数,赋值给counter,Application_OnEnd事件函数中,将counter存到文件中。 
(5)  用记事本创建文件counter_File.txt,其中内容为字符0。存文件到宿主目录中。
(6)  修改global.asax文件如下:
<script language="c#" runat=server>
void Application_OnStart(Object src,EventArgs e)
{//用Server对象对象得到counter_File文件绝对路径
string s=Serve.MapPath(\counter_File.txt);
Application.Add("counterFile",s);//保存供Application_OnEnd事件函数使用
System.IO.FileStream fs=new System.IO.FileStream("s",FileMode.OpenOrCreate);
System.IO.StreamReader r=new System.IO.StreamReader(fs);
s=r.ReadLine();
r.Close();
Application.Add("counter",Convert.ToInt(s));
}
void Application_OnEnd(Object src,EventArgs e)
{//此时Server对象已不存在,无法用Server对象得到counter_File文件绝对路径
string s= (string)Application("counterFile");//取出保存的计数文件的全路径地址
System.IO.FileStream fs=new System.IO.FileStream("s",FileMode.OpenOrCreate);
System.IO.StreamWrite w=new System.IO.StreamWrite(fs);
int num=(int)Application("counterFile");
w.Write(num.ToString());
w.Close();
}
</script>
(7)  再一次访问dault.aspx网页,看是否已解决以上提出的问题。这里还有一个问题,如果用用如下URL访问网页:http://Localhost/Other.aspx,这样计数器就不能计数,解决的方法见Session 对象一节。

时间: 2024-10-06 02:44:14

Application对象的相关文章

什么是Cookie对象,Session对象,Application对象。

Cookie是: 一个由网页服务器放在您硬盘上的非常小的文本文件. 它本质上就像您的身份证明一样,并且不能像代码那样被执行或被用来散布病毒.它只能被您使用并且只能由提供的服务器读取. 使用Cookie的目的是: 告诉服务器您再次的访问该服务器. Cookie能为您做什么?: 帮您节约时间.如果您自定义页面,或注册产品或服务.cookie帮助微软记住您的身份.当下一次您再次访问的时候,我们将显示您需要的信息.或者当您注册另一个产品或服务的时候,您只需要键入您的E-mail和密码.我们将帮您填入任何

带你认识ASP Application 对象

ASP Application 对象 Previous Page Next Page 在一起协同工作以完成某项任务的一组 ASP 文件称作应用程序 (application).ASP 中的 Application 对象用于将这些文件捆绑在一起. Application 对象 web 上的一个应用程序可以是一组 ASP 文件.这些 ASP 文件一起协同工作来完成某项任 务.ASP 中的 Application 对象用来把这些文件捆绑在一起. Application 对象用于存储和访问来自任何页面的

什么是Cookie对象,Session对象,Application对象等问题

1.什么是Cookie对象,Session对象,Application对象 Application对象应用程序状态:Web 应用程序的所有用户都可以访问该应用程序的状态信息Session对象,会话状态:只有特定会话中的用户可以访问该信息不同的用户正在使用某个应用程序,则每个用户都将有一个不同的会话状态客户端状态管理:Cookie对象Cookie:使用文本文件存储信息来维护状态Cookie对象也可以保存客户信息,与Session 对象相似,分别保存不同用户的信息.和Session的区别是:Sess

什么是Cookie对象,Session对象,application对象?

(1)Cookie对象是: 一个由网页服务器放在您硬盘上的非常小的文本文件. 它本质上就像您的身份证明一样,并且不能像代码那样被执行或被用来散布病毒.它只能被您使用并且只能由提供的服务器读取. 使用Cookie的目的是: 告诉服务器您再次的访问该服务器. Cookie能为您做什么?: 帮您节约时间.如果您自定义页面,或注册产品或服务.cookie帮助微软记住您的身份.当下一次您再次访问的时候,我们将显示您需要的信息.或者当您注册另一个产品或服务的时候,您只需要键入您的E-mail和密码.我们将帮

jsp 用application对象制作留言板

1 <%@ page contentType="text/html; charset=gb2312"%> 2 <html> 3 <body> 4 <form action="show.jsp" method="post"> 5 输入名字:<input type="text" name="name"><br> 留言标题:<input

Struts2中获取Web元素request、session、application对象的四种方式

我们在学习web编程的时候,一般都是通过requet.session.application(servletcontext)进行一系列相关的操作,request.session.和application他们都是web开发最常用和最实用的对象,有了它们可以大大方便开发人员进行开发和操作.但是在struts2中,基本都是action,这些个方法都是没有requet.session.application,所以如何获取这几个常用对象,也成了大家都比较关注的问题,下面我就来演示下,如何在struts2中

Application对象、ViewState对象、分页展示--2017年1月4日

Application对象 存储 Application 变量  Application["application名称"] = "application的值"; 取回 Application 变量 string str = Application["application名称"]; 常用的属性和方法 All 返回全部的Application对象变量到一个对象数组   AllKeys 返回全部的Application对象变量到一个字符串数组   C

【VBA编程】11.Application对象

Application对象常用属性[ActiveCell属性]ActiveCell属性返回一个Range对象,表示当前窗口或指定窗口中的单元格.如果窗口没显示工作表,则此属性无效.[代码区域] Sub 激活单元格() Worksheets("sheet1").Activate '激活当前单元格 With ActiveCell .Value = "娑娜" With .Font .Bold = True '设置为粗体 .Italic = True '设置为斜体 .Siz

ASP入门(十一)-Application对象

在一起协同工作以完成某项任务的一组ASP文件称为一个应用程序.Application 对象用于把这些文件捆绑在一起. Application 对象用于在整个应用程序生存期间保存信息. Application 对象用于存储和访问来自任何页面的变量,类似于 Session 对象.不同之处在于,所有用户分享一个 Application 对象,而 Session 对象和用户的关系是一一对应的. Application 对象没有属性. Application 对象的原理是这样的,在每次应用程序启动(即 I