ASP.NET网站聊天室的设计与实现(第3节)
大家都玩过网站聊天室吧,那知道它是怎么实现的吗?
今天我们就来设计一个网站聊天室,用户输入用户名登陆聊天室,采用框架结构实现。
学习内容:
第一步,聊天室首页与简单计数器设计
1、打开vs2008。在“解决方案‘101'下新建网站,命名为chatroom.默认首页文件为default.aspx。
2、为default.aspx添加窗体控件,切换到“设计”视图,从左侧工具箱标准组中拖出2个lable控件,1个textbox控件,一个button控件,最后给输入昵称的textbox文本添加必填验证。
在“设计”视图中双击btn1按钮,在default.aspx.cs中编写如下事件代码:
public partial class _default : system.web.ui.page { protected void page_load(object sender, eventargs e) { if (application["user_online"] == null) { application["user_online"] = 0; } application["user_online"] = (int)application["user_online"] + 1; label3.text = "(现在共有" + application["user_online"].tostring() + "人在线!)"; } protected void button1_click(object sender, eventargs e) { if (page.ispostback) { session["user_name"]=this.txt1.text; response.redirect("chat.aspx"); } } }
第二步,构建登录字符串与发言字符串
1、创建chat.aspx页面文件,使用如下html语言可以编写分框架页面程序,把一个窗口分成两半。左半窗口用来存放输入发言内容的页面文件inputwin.aspx,右半窗口用来存放显示聊天内容的页面文件showwin.aspx。
2、构建登录消息字符串。在chat.aspx.cs的page_load事件中编写代码如下:
protected void page_load(object sender, eventargs e) { string user_name = (string)session["user_name"]; string saystr = "来自" + (string)request.servervariables["remote_addr"] + "的"; saystr = saystr + "<b><font color=red>" + user_name + "</font></b>"; saystr = saystr + "于" + datetime.now + "大驾光临"; application.lock(); application["show"] = saystr + "<br>" + application["show"];i=i+1 application.unlock(); }
3、构建发言内容字符串。创建输入发言内容的页面文件inputwin.aspx。为页面inputwin.aspx添加控件,这里使用两个dropdownlist下拉列表框控件,分别用来选择发言人的性别和心情,一个单行textbox控件(对谁说);一个多行textbox控件(发言内容);一个button按钮(发言按钮),最后添加验证控件。
在“设计”视图中双击btn1(发言)按钮,在inputwin.aspx.cs文件的btn_click事件中编写代码如下:
protected void button1_click(object sender, eventargs e) { if (page.ispostback == true) //页面数据回传 { string ssex, emotion, who; ssex = dropdownlist1.selecteditem.value; //获取性别 emotion = dropdownlist2.selecteditem.text + "的"; //获取发言时表情 who = "对" + "<b>" + textbox2.text + "</b>"; //获取对谁说 //构建发言字符串: string saystr = "<font size='3' color='00ff00'><b>" + (string)session["user_name"]; saystr = saystr + ssex + "</b></font>在" + datetime.now + emotion + who + " 说:"; saystr = saystr + textbox3.text; application.lock(); application["show"] = saystr + "<br>" + (string)application["show"]; application.unlock(); textbox3.text = "";// 将发言框清空 } }
4、创建显示发言字符串和发言内容的页面文件(showwin.aspx),实现代码如下:
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> <meta http-equiv="refresh" content="4"/> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
在showwin.aspx.cs的page_load事件中编写代码如下:
public partial class showwin : system.web.ui.page { protected void page_load(object sender, eventargs e) { response.write((string)application["show"]); } }
5、为离开聊天室页面的exit.aspx.cs文件编写代码如下:
protected void page_load(object sender, eventargs e) { string saystr = "<b>" + (string)session["user_name"] + "</b>"; saystr = saystr + "于" + datetime.now + "离开聊天室了"; saystr = "<font color='green'>" + saystr + "</font>"; application.lock(); application["show"] = saystr + "<br>" + (string)application["show"]; application["user_online"] = (int)application["user_online"] - 1; application.unlock(); response.redirect("chatroom.aspx"); }
6、运行聊天室首页default.aspx。
运行效果图
总结
设计网站聊天室,听起来就好像是已经进入到了网站制作这个环节,看到自己设计的一个功能很简单的聊天室,有一点点的成就感,虽然这只是万里长城的第一步。通过这次学习理解到了session与application的各自作用,学会了如何使页面分成两个窗口,如何找到正确的事件进行编写,总体来说对网页设计有了一些感觉,希望大家也能喜欢,试着设计一个属于自己的网站聊天室吧