写了快一年的ASP.NET,应用程序对象还真没怎么用过。看了看书,根据这两个对象的特性写了一个简单的聊天室程序。真的是非常的简陋
ASP .网中有两个重要的对象,一个是应用对象,一个是会议对象。
应用:记录应用程序参数的对象,该对象用于共享应用程序级信息。
会话:记录浏览器端的变量对象,用来存储跨网页程序程序的变量或者对象。
说实话,写了快一年的ASP.NET,应用程序对象还真没怎么用过。看了看书,根据这两个对象的特性写了一个简单的聊天室程序。真的是非常的简陋。
我的思路是,有两个页面默认页和聊天室页,页面布局如图:
默认页:
聊天室页:
思路大概就是,在默认页登录时,输入的昵称存入会议对象当中,并跳转到聊天室页,并把会议中存的键为"昵称"存入应用对象中去。遍历应用对象,给左侧的列表框添加在线人的昵称。利用应用程序对象在会话_开始和会话_结束方法中对键为"计数"进行1,-1用于记录当前在线人数。在利用应用对象键为"内容"存储聊天记录。
下面上代码
Global.asax:
复制代码代码如下:
受保护的空的应用程序启动(对象发送方,EventArgs e)
{
应用程序[' count ']=0;
应用程序['内容']='聊天记录\ n ';
}
受保护的void Session_Start(对象发送方,事件参数e)
{
申请. lock();
Application[' count ']=(int)Application[' count ']1;
申请. UnLock();
}
受保护的void Session_End(对象发送方,事件参数e)
{
申请. lock();
Application[' count ']=(int)Application[' count ']-1;
申请. UnLock();
}
Default.aspx:
复制代码代码如下:
受保护的void button_login_Click(对象发送方)
{
如果(!字符串IsNullOrEmpty(textbox_nickname .正文))
{
会话['昵称]=文本框昵称.文本;
}
回应。重定向(‘聊天室。aspx’);
}
ChatRoom.aspx:
复制代码代码如下:
受保护的void Page_Load(对象发送方,EventArgs e)
{
标签_计数. Text='当前在线人数为应用程序['计数']。ToString()'人;
如果(!IsPostBack)
{
如果(会话['昵称']!=空)
{
申请。添加(会话['昵称']。ToString()、Session['昵称']);
}
文本框_记录. Text=应用程序['内容']。ToString();
}
列表框_用户名1000个项目。clear();
foreach(字符串应用程序中的字符串。内容)
{
如果(!海峡。等于('内容')!海峡。等于(‘计数’)!海峡。等于('名称'))
{
列表框_用户名1000个项目。添加(新的列表项(应用程序[str]。ToString(),应用程序[str].ToString()));
}
}
}
受保护的void按钮_发送_点击(对象发送方)
{
如果(会话['昵称']!=空)
{
应用程序['内容']=(会话['昵称'])。ToString()'说:' textbox_sendmsg .文本\ n’);
文本框_记录. Text=应用程序['内容']。ToString();
}
}
受保护的void按钮_退出_点击(对象发送方)
{
申请。删除(会话['昵称']。ToString());
Application[' count ']=(int)Application[' count ']-1;
回应。重定向(' web计数器。aspx’);
}
这样简单的聊天室就完成了,在本地使用的时候,在一个浏览器下好像不会创建新的会话,需要在不同浏览器下登录才能看到效果。
这里也要注意一点就是,在退出聊天室的时候,要把应用键为"昵称",即当前会话["昵称"]的值给去除掉。否则刷新列表框的时候,会发现退出的昵称还存在。
同时也要把键为"计数"的应用对象-1,也许你要问,不是在会话_结束方法中已经-1了么?这块我还真不确定,可能是有两个原因,不知道是哪个?希望明白的朋友给予指点。
1.会话尚未过期。我只是在应用程序中用相应的key session杀死了对象,但没有清除真正的session。所以不会调用Session_End方法。(但也许你会问,清空当前会话[“昵称”]对象不就可以了吗?我试过这个,但是count没有-1。)
2.是因为我是在两个不同的本地浏览器做这个聊天操作吗?
在一些特殊情况下,使用application对象确实对我们有帮助,所以我就不用说session了,session肯定是我们经常使用的。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。