ASP.Net中有两个重要的对象,一个是application对象,一个是session对象。
Application:记录应用程序参数的对象,该对象用于共享应用程序级信息。
Session:记录浏览器端的变量对象,用来存储跨网页程序程序的变量或者对象。
说实话,写了快一年的asp.net,application对象还真没怎么用过。看了看书,根据这两个对象的特性写了一个简单的聊天室程序。真的是非常的简陋。
我的思路是,有两个页面Default页和ChatRoom页,页面布局如图:
Default页:
ChatRoom页:
思路大概就是,在Default页登录时,输入的昵称存入session对象当中,并跳转到ChatRoom页,并把session中存的键为”nickname”存入application对象中去。遍历application对象,给左侧的listbox添加在线人的昵称。利用appliaction对象在Session_Start和Session_End方法中对键为”count”进行+1,-1用于记录当前在线人数。在利用application对象键为”content”存储聊天记录。
下面上代码
Global.asax:
protected void Application_Start(object sender, EventArgs e)
{
Application["count"] = 0;
Application["content"] = "聊天记录\n";
}
protected void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["count"] = (int)Application["count"] + 1;
Application.UnLock();
}
protected void Session_End(object sender, EventArgs e)
{
Application.Lock();
Application["count"] = (int)Application["count"] - 1;
Application.UnLock();
}
</div>
Default.aspx:
protected void button_login_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textbox_nickname.Text))
{
Session["nickname"] = textbox_nickname.Text;
}
Response.Redirect("ChatRoom.aspx");
}
</div>
ChatRoom.aspx:
protected void Page_Load(object sender, EventArgs e)
{
label_count.Text = "当前在线人数为" + Application["count"].ToString() + "人";
if (!IsPostBack)
{
if (Session["nickname"] != null)
{
Application.Add(Session["nickname"].ToString(), Session["nickname"]);
}
textbox_records.Text = Application["content"].ToString();
}
listbox_usernames.Items.Clear();
foreach (string str in Application.Contents)
{
if (!str.Equals("content") && !str.Equals("count") && !str.Equals("name"))
{
listbox_usernames.Items.Add(new ListItem(Application[str].ToString(), Application[str].ToString()));
}
}
}
protected void button_send_Click(object sender, EventArgs e)
{
if (Session["nickname"] != null)
{
Application["content"] += (Session["nickname"].ToString() + "说:" + textbox_sendmsg.Text + "\n");
textbox_records.Text = Application["content"].ToString();
}
}
protected void button_exit_Click(object sender, EventArgs e)
{
Application.Remove(Session["nickname"].ToString());
Application["count"] = (int)Application["count"] - 1;
Response.Redirect("WebCounter.aspx");
}
</div>
这样简单的聊天室就完成了,在本地使用的时候,在一个浏览器下好像不会创建新的session,需要在不同浏览器下登录才能看到效果。
这里也要注意一点就是,在退出聊天室的时候,要把application键为”nickname”,
您可能想查找下面的文章:
- ASP.NET 中的Application详解
- ASP.NET中Application、Cookie、Session、Cache和ViewState
- ASP.NET中使用Application对象实现简单在线人数统计功能
- ASP.NET中Application全局对象用法实例浅析
- ASP.NET 使用application与session对象写的简单聊天室程序
- ASP.NET中application对象的使用介绍
- ASP.NET中application对象的使用介绍
- asp.net错误处理Application_Error事件示例
- ASP.Net的Application介绍
- ASP.NET中Application和Cache的区别分析