ASP.NET的内置对象:Application对象


    Application对象用于共享应用程序级信息,即多个用户共享一个Application对象。

    在第1个用户请求ASP.NET文件时,将启动应用程序并创建Application对象。一旦Application对象被创建,就可以共享和管理整个应用程序的信息。在应用程序关闭之前,Application对象将一直存在。所以,Application对象是用于启动和管理ASP.NET应用程序的主要对象。

 

1、Application对象的常用集合、属性和方法

Application对象的常用集合及说明

        集合

                        说明

     Contents

   用于访问应用程序状态集合中的对象名

  StaticObjects  

   确定某对象指定属性的值或遍历集合,并检索所有静态对象的属性    

Application对象的常用属性及说明

 属性

                       说明

  AllKeys  

   返回全部Application对象变量名到一个字符串数组中                    

   Count

   获取Application对象变量的数量

   Item

   允许使用索引或Application变量名称传回内容值

Application对象的常用方法及说明

  方法

                              说明

       Add

   新增一个Application对象变量

      Clear

   清除全部Application对象变量

      Lock

   锁定全部Application对象变量

     Remove

   使用变量名称移除一个Application对象变量

   RemoveAll   

   移除全部Application对象变量

     Set

   使用变量名称更新一个Application对象变量的内容                  

    UnLock

   解除锁定的Application对象变量

 

2、使用Application对象存储和读取全局变量

    Application对象用来存储和维护某些值,需要通过定义变量来完成。Application对象定义的变量为应用程序级变量,即全局变量。变量可以在Global.asax文件或aspx页面中进行声明。语法如下:

Application[varName] = 值;

其中,varName是变量名。

    例如:

Application.Lock();

Application["Name"] = "小亮";

Application.UnLock();

Response.Write( Application["Name"].ToString() );

[注]:由于应用程序中的所有页面都可以访问应用程序变量,所以为了确保数据的一致性,必须对Application对象加锁。

 

3、Application对象的程序应用

(1)设计一个访问计数器

    访问计数器主要是用来记录应用程序曾经被访问次数的组件。用户可以通过Application对象和Session对象实现这一功能。

    本示例主要是在Global.asax文件中对访问人数进行统计,并在Default.aspx文件中将将统计结果显示出来。

程序实现的主要步骤如下:

①新建一个网站,添加一个全局应用程序类(即Global.asax文件),在该文件的Application_Start事件中将把访问数初始化为0。代码如下:

void Application_Start(objectsender, EventArgs e) {

     // アプリケーションのスタートアップで実行するコードです

    Application["count"] = 0;

}

②当有新用户访问网站时,将建立一个新的Session对象,并在Session对象的Session_Start事件中对Application对象加锁,以防止因为多个用户同时访问页面造成并行,同时将访问人数加1;当用户推出该网站时,将关闭该用户的Session对象,同理对Application对象加锁,然后将访问人数减1.代码如下:

 void Session_Start(objectsender, EventArgs e) {

   // 新規セッションを開始したときに実行するコードです

   Application.Lock();

    Application["count"] = (int)Application["count"] + 1;

   Application.UnLock();

}

 

void Session_End(objectsender, EventArgs e) {

   // セッションが終了したときに実行するコードです

    // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为

    // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer

    // 設定されている場合、イベントは発生しません。

   Application.Lock();

    Application["count"] = (int)Application["count"] - 1;

   Application.UnLock();

}

③对Global.asax文件进行设置后,需要将访问人数在网站默认主页Default.aspx中显示出来。在Default.aspx页面上添加了1个Label控件,用于显示访问人数。代码如下:

protected voidPage_Load(object sender, EventArgs e){

    Label1.Text= "您是该网站的第" + Application["count"].ToString() + "个访问者";

}

 

(2)制作聊天室

    Application对象的一个典型应用就是聊天室的制作。

    本示例主要利用Application对象实现聊天室功能。首先应该登录聊天室,在“用户名”文本框中输入登录用户的名称,再单击“登录”按钮进入聊天室。

程序的主要实现步骤如下:

①新建一个网站,在网站中添加Login.sapx、Content.aspx和List.aspx三个Web页面,将Login.sapx设为主页,其中,Default.aspx页面为聊天室的主页面,Content.aspx页面用来显示用户的聊天信息,List.aspx页面用来显示在线用户的列表。

②在网站中添加一个Global.asax全局程序级文件,用来初始化Application对象。

a.该聊天室是使用Application对象实现的,在应用程序启动时,应在Application对象的Application_Start事件中将所有数据初始化。代码如下:

void Application_Start(object sender, EventArgs e) {

    // 在应用程序启动时运行的代码

    //建立用户列表

    string user= "";  //用户列表

   Application["user"] = user;

    Application["userNum"]= 0;

    string chats= "";  //聊天记录 

   Application["chats"] = chats;

       //当前的聊天记录数

   Application["current"] = 0;

}

b.在聊天室主页面中单击“发送”按钮时,首先调用Application对象的Lock方法对所有的Application对象进行锁定,然后判断当前聊天新的的记录数是否大于20。如果大于,则清空聊天记录,并重新加载用户的聊天记录;否则,将把聊天内容、用户名和发信息时间保存在Application对象中。代码如下:

protected voidbtnSend_Click(object sender, EventArgs e){

    int P_int_current = Convert.ToInt32(Application["current"]);

   Application.Lock();

    if (P_int_current == 0 || P_int_current > 20){

       P_int_current = 0;

       Application["chats"] =Session["userName"].ToString() + "说:" + txtMessage.Text.Trim() + "(" + DateTime.Now.ToString()+ ")";

    }

    else

    {

       Application["chats"] =Application["chats"].ToString() + "," + Session["userName"].ToString()+ "说:" + txtMessage.Text.Trim() + "(" + DateTime.Now.ToString()+ ")";

    }

   P_int_current += 1;

    Application["current"] = P_int_current;

   Application.UnLock();

}

 

protected voidbtnExit_Click(object sender, EventArgs e){  

    Application.Lock();

    string P_str_userName = Application["user"].ToString();

    Application["user"] =P_str_userName.Replace(Session["userName"].ToString(),"");

   Application.UnLock();

   Response.Write("<script>window.opener=null;window.close();</script>");

}

③显示聊天信息页面Content.aspx加载时,从Application对象中读取保存的聊天信息,并将其显示在TextBox文本框中。Content.aspx页面的Page_Load事件代码如下:

protected voidPage_Load(object sender, EventArgs e){

    int P_int_current = Convert.ToInt32(Application["current"]);

    Application.Lock();

    string P_str_chats = Application["chats"].ToString();

    string[] P_str_chat = P_str_chats.Split(',');

    for (int i =P_str_chat.Length - 1; i >= 0; i--){

        if (P_int_current == 0){

           txtContent.Text = P_str_chat[i].ToString();

        }

        else{

           txtContent.Text = txtContent.Text + "\n"+ P_str_chat[i].ToString();

        }

    }

   Application.UnLock();

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值