一个简单聊天室实例

这个简单的聊天室没有与数据库连接,但是它实现了一个聊天室的基本功能,如登录验证、在线提示、在线人数统计、聊天记录等,主要用到表单、request对象、response对象、application对象、session对象、cookie对象、server对象等。

1.打开VS2005,新建一个项目命名为ChartRoomTest

右键单击解决方案选择“添加新项”菜单命令,在弹出的对话框中选择“全局应用程序类”,单击“添加”按钮

双击打开Global.asax文件,添加如下代码

在 Application_Start事件中添加代码:

        string[] TempTalk = new string[10];//用于存储聊天室的前十个聊天记录
        Application["TalkConten
t"] = TempTalk;
        Application["TalkId"] = 0;//存储聊天室记录的总数
        Application["UserCount"] = 0;//存储目前的在线人数
  

在Session_Start中添加:   

        Session.Timeout = 30;//会话的失效时间为30分钟
        Session["UName"] = "";//登陆的名字
        int uCount = Int32.Parse(Application["UserCount"].ToString());
        uCount += 1;
        Application["UserCount"] = uCount;//在线人数
    在 Session_End中添加

       int uCount = Int32.Parse(Application["UserCount"].ToString());
        uCount = uCount - 1;
        Application["UserCount"] = uCount;

2.聊天室的登陆

进入聊天室后需要一个用于聊天的用户名,这个就需要通过登陆功能来完成

将default.aspx重命名为Login.aspx,切换到设计视图,布局控件如图:


其中:    登录名 id属性值为NameTxt 。 密码id属性值为Pwdtxt

登陆事件:

protected void btnLogin_Click(object sender, EventArgs e)
    {

        // 定义两个变量用来获取用户登录名和密码
        string strUserName;
        string strPassword;

        strUserName = Request.Form["NameTxt"].ToString().Trim();
        strPassword = Request.Form["PwdTxt"].ToString().Trim();

        /*if (!((strUserName == "yolanda") || (strPassword == "123")))
        {
            Response.Redirect("login.aspx");
        }*/

        if (strUserName == Session["UName"].ToString())
        {
            lblMessage.Text = "对不起,您已经登陆了";
        }
        else
        {

            //将用户名和密码存储到对应的UserName和Password中,并将用户名存储到session的UName中
            Session["UserName"] = strUserName;
            Session["Password"] = strPassword;
            Session["UName"] = strUserName;
            Response.Redirect("main.aspx");
        }

    }

取消事件

protected void btnCanle_Click(object sender, EventArgs e)
    {
        Response.Write("<script language='javascript' text='text/javascript'>window.close()</javascript>");
    }

3.聊天室的聊天主界面Main.aspx

此界面用到了HTML中的<frameset>标签,该标签作用是把页面分为上下两个窗口,上面窗口显示Display.aspx页面,下面的窗口显示Send.aspx页面。

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<Frameset rows="*,65">
<frame src="Display.aspx" scrolling="auto"></frame>
<frame src="Send.aspx" scrolling="auto"></frame>
</Frameset>
</html>

4.发送聊天信息页面Send.aspx

界面为:

文本框ID属性为:Messagetxt 。“发送”按钮id属性为:submitBtn 。 “清除 ” id属性为:ClearBtn

“发送”按钮SubmitBtn_Click事件

protected void SubmitBtn_Click(object sender, EventArgs e)
    {
        if (Request.Form["MessageTxt"] != "")
        {
            Application.Lock();

            //如果聊天记录超过了10条
            if (Int32.Parse(Application["TalkId"].ToString()) >= 10)
            {

           //将数组内容向下标减小的方向移动一位
                for (int i = 0; i < 9; i++)
                {
                    ((string[])Application["TalkContent"])[i] = ((string[])Application["TalkContent"])[i + 1];
                }
                //通过中间变量使聊天记录条数减1,并保存到原来的application对象的TalkId变量中
                int talkId = Int32.Parse(Application["TalkId"].ToString());
                talkId = talkId - 1;
                Application["TalkId"] = talkId;
            }
            string strUserName, strContent;
            string[] arrTempTalk = new string[10];
            int id;

            //获取用户登录用户名
            strUserName = Session["UserName"].ToString();
            //对用户输入的文本进行html编码
            strContent = Server.HtmlDecode(this.MessageTxt.Text);

            arrTempTalk = (string[])Application["TalkContent"];
            id = Int32.Parse(Application["TalkId"].ToString());
            arrTempTalk[id] = strUserName + " " + DateTime.Now.ToString() + "<font color=yellow> 说到:</font>" + strContent;

            id = id + 1;
            Application["TalkId"] = id;
            Application["TalkContent"] = arrTempTalk;

            Application.UnLock();
            this.MessageTxt.Text = "";
        }
    }

取消:

protected void ClearBtn_Click(object sender, EventArgs e)
    {
        this.MessageTxt.Text = "";
    }

未完,待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简易聊天室本次实验的目的是通过以下题目掌握JSP内置对象,包括:request,response,session,application等。 (1)制作简易聊天室,能够实现简单的页面聊天功能。 (2)制作网页计数器,要求相同的窗口内刷新页面访问次数并不增加,并且用图片来显数字。1、 熟悉request、response、session、application、out等内置对象; 2、 选择制作网页计数器程序需准备数字图片;1、进入jsp子目录,编写简易聊天室的JSP程序,聊天室的需要实现的基本功能:输入昵称、聊天。 2.根据功能编写页面代码。二、网页计算器 利用内置对象application <html> <head> <base href="<%=basePath%>"> <title>My JSP 'Counter.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 您是第位访问者! </body> </html> 简易聊天室本次实验的目的是通过以下题目掌握JSP内置对象,包括:request,response,session,application等。 (1)制作简易聊天室,能够实现简单的页面聊天功能。 (2)制作网页计数器,要求相同的窗口内刷新页面访问次数并不增加,并且用图片来显数字。1、 熟悉request、response、session、application、out等内置对象; 2、 选择制作网页计数器程序需准备数字图片;1、进入jsp子目录,编写简易聊天室的JSP程序,聊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值