基于java的在线聊天系统设计

基于java的在线聊天系统设计
在进入20世纪90年代以后,信息量就以几何倍的数量进行增长,而互联网的出现则促进了信息的传播,21世纪更是一个信息大爆炸的时代,计算机及互联网已被广泛运用到各个领域及地区。随着互联网的高速发展,人们通过网络可以更方便快捷地进行信息交流和学习,聊天系统正是可以为大家提供这样的一个交流平台,人们可以通过文字与符号进行实时的交流。聊天室是一个向整个因特网开放的地方,是提供给网民一个交友与娱乐的场所,在这个虚拟的社会中,可以结交到各层次各地方的朋友,从而使得网络用户能够获取更多的知识,并增强个人的阅历。在聊天室里网民可选择自己的感兴趣的房间、聊天对象,与其进行对话交流,是网民之间相互沟通、交流情感的最佳方式之一。同时它已成为各网站提供的一个服务标准,是吸引网民,提高人气的一个重要方式。
本人所设计的网络聊天系统采用的是JSP和Servlet技术来实现的,其中主要介绍了本聊天系统的各项基本功能,如:用户注册、在线聊天等。通过聊天系统的设计,熟悉了一个网站建设的基本流程。包含网页的制作、服务器的建立与管理、数据库的建立与使用等。采用了MyEclipse 8.5编辑器、SQL Server 2005数据库、Tomcat 6.0应用程序服务器。
关键词   网络聊天室,交流平台,JSP,Servlet

1  引言    1
    1.1  开发背景    1
    1.2  开发意义    1
    1.3  实现目标    2
2  需求分析    2
    2.1  功能需求    2
    2.2  系统流程分析    3
    2.3  数控库需求分析    3
    2.4  数据流图    3
    2.5  用例描述    4
3 总体设计    5
     3.1  系统功能设计    .6
    3.2  系统开发平台及主要技术    6
    3.3  系统功能结构图    8
    3.4  系统流程图    9
    3.5  数据库结构设计    10
    3.6  逻辑结构的设计    12
4 详细设计    14
    4.1  系统运行环境配置    14
    4.2  具体功能    16
    4.3  系统测试    50
5  运行环境    50
    5.1  软件环境    51
    5.2  硬件环境    51
结  论    51
致  谢    53
参 考 文 献    54
1.2  开发意义
Internet 是目前世界上最大的计算机互联网,它将世界各地各种规模的网络连接成一个整体。据有关人士统计,目前Internet上已有上百万个网站,其范围跨越了金融、商业、新闻、教育、科技、文化、娱乐、体育等各个领域。因此可见,建设一个好的网站对于一个机构、企业的发展十分的重要。
这些年来随着计算机网络的快速发展,人们的生活有了很多的改变。各种各样的在线服务系统,更是深刻的影响了人们的生活和交流方式,使得人们能在全球的任何能连接上网络的人进行随时通讯。所以网上聊天系统作为一种方便消费者与人们之间联系的实用系统便这样出现了。网上聊天系统是为了让人们能更好更快捷的进行交流和联系而提供的一个交流平台。因此通过提供完善的网上聊天系统的管理,可以达到增进人们与人们之间交流和联系的目的,这也是研究本课题所得到的一些相关了解与启发。

1.3  实现目标
普通用户与管理员用户模块主要实现以下目标:
1)普通用户:注册账号,查看用户资料,查看聊天信息,私聊,群聊。
2)管理员用户:警告,禁言,踢人,删除用户,聊天室管理等等。
2  需求分析
2.1  功能需求
  系统聊天室的基本功能如下:
1、实现聊天室的基本功能,能让每一个用户发言,按照各自的聊天对象准确的发送到指定的目的用户上。
2、显示在线用户列表,方便用户选择交流对象。
3、发言区就是输入单元,能够让用户按照自己的喜好来发表观点,给用户提供丰富的字体、表情、颜色、大小等功能。
4、接收区就是输出单元,让用户能清楚的看到自己以及其他用户的会话。
5、屏蔽敏感词汇功能,为了营造一个和谐气氛的聊天室,把敏感、过激等言辞屏蔽。
6、用户可以修改自己的个人资料。
7、用户可以查看历史聊天记录。
8、管理员在登录聊天室后,除了可以聊天外,还拥有各种管理权限。如下:
        (1)对不遵守聊天规则的用户进行警告,并通知本聊天室在线的所有用户,该用户被警告了。
    (2)对不遵守聊天规则的用户进行禁言,该用户就不能再发言了。
    (3)对不遵守聊天规则的用户踢出聊天室,该用户就会被踢出本聊天室了。
    (4)对不遵守聊天规则的用户进行删除,即拉入黑名单,从数据库中将该用户信息进行彻底删除了。
    (5)管理员可对所有的聊天室进行管理。根据用户的请求增加聊天室、删除聊天室、修改聊天室。
      (6)管理员可查看所有用户的基本资料,也可选择查看本聊天室的所有用户的基本资料。

2.2  系统流程分析
系统基本的功能流程:
(1)用户注册一个属于自己的用户名和密码。
(2)用户登录聊天室。
(3)根据用户的个人喜好,选择进入不同的聊天室。
(4)用户进入聊天室后,系统通知所有在线用户,有新用户进入该聊天室,并将该新用户显示在聊天室的用户名列表中,其他的用户可以通过单击用户名列表中的用户名来进行交流。
(5)聊天室支持个性化聊天内容。
(6)当有用户想退出聊天室,系统通知所有此聊天室的在线用户。
2.3  数据库需求分析
    本系统是一个网上聊天系统,必须要用到数据库来存储信息。数据库需求分析主要是用来分析用户的需求,要建立一个符合本系统的数据库,就必须要先了解它的作用。数据库需求分析是数据库设计的前奏,也是最需要消耗时间、最麻烦的部分。

 2.4数据流图
    数据流图DFD,是一种描述系统中数据流程的图形工具,它用图形的方式来表达系统的逻辑功能和数据在系统内部的逻辑流向与逻辑变换过程。下面是用户登录的数据流图:
核心代码(sendMsgServlet.java):

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        HttpSession session = request.getSession();
        PrintWriter out = response.getWriter();
        //首先检测发送信息的聊天用户是否已经被踢出聊天室
        //如果已经被踢出聊天室,后面的信息发送程序将不再执行
        String userName = session.getAttribute("username").toString();
        String chatRoom = session.getAttribute("chatRoom").toString();
        if(onlineUserDao.getKickedUser(userName, chatRoom))
        {
            out.println("<script>parent.alert(\"对不起,您已经被踢出本聊天室!!\")</script>");
            out.println("<script>parent.parent.document.location.href='chatRoomListServlet'</script>");
        }
        //判断是否被禁言
        if(onlineUserDao.getDenyUser(userName, chatRoom)){
            out.println("<script>parent.alert(\"对不起,您已经被禁言!!\")</script>");
            return;
        }
        request.setCharacterEncoding("utf-8");
        /*
        接收用户输入的聊天信息以及用户选择的信息显示颜色、聊天表情、是否悄悄话、聊天对象
        */
        String msgContent = (String)request.getParameter("msg");
        String action = (String)request.getParameter("action");
        String color = (String)request.getParameter("color");
        String msgTo = (String)request.getParameter("msgTo");
        String font_family=(String)request.getParameter("font_family");
        String fontSize=(String)request.getParameter("_fontsize");
        int secret = 0;
        //如果聊天对象为空,表示对所有人说话
        if(msgTo == null || msgTo.equals(""))
            msgTo = "所有人";
        //如果悄悄话的选框被选中,表示这个消息是悄悄话
        if(request.getParameter("secret") != null)
        {
            secret = 1;
        }
        //message对象,用户抽象(保存)一条聊天信息
        message.setMsgFrom(session.getAttribute("username").toString());
        message.setChatAction(action);
        message.setChatRoom(session.getAttribute("chatRoom").toString());
        message.setMsgTo(msgTo);
        message.setSecret(secret);
        message.setMsgContent("<font  style='color:"+color+";font-family:"+font_family+";font-size:"+fontSize+"pt'>"+msgContent+"</font>");
        //将聊天信息保存到数据库中
        msgDao.add(message);
        //将input.jsp的聊天信息输入框清空,后面的[\"\"]表示转义符,为【“”】的意思
        out.println("<script>parent.document.chatForm.msg.value=\"\"</script>");
        //刷新dataValue页面,将刚才发送的信息立即显示出来
        out.println("<script>parent.parent.mainFrame.dataValue.location.reload()</script>");
    }

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/jsjkxyjs/3071.html

好棒文