吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1128|回复: 5
收起左侧

[求助] javaweb聊天室该怎么实现私聊功能

[复制链接]
chenmu736 发表于 2022-7-1 16:39
最近在网上学习javaweb在线聊天室的项目,原本的项目只是将聊天内容发到公屏上,现在想修改下,实现两个人之间的聊天记录不会被第三个人在公屏上看到。
原本设想就是加个判断用户姓名是否正确之后才显示,但是无法实现,所以想请大家看看。
主页面jsp部分代码:
// 显示聊天的内容
function showContent(){
   $.post("${pageContext.request.contextPath}/user?"+new Date().getTime(),{'method':'getMessage'},function(data){
      $("#content").html(sysBBS+data);
   });
}//发送聊天信息function send(){
   if(form1.to.value==""){
      alert("请选择聊天对象!");
      return false;
   }
   if(form1.content.value==""){
      alert("发送信息不可以为空!");
      form1.content.focus();
      return false;
   }
   // if(form1.to.value=="所有人")
   // {
      $.post("${pageContext.request.contextPath}/user?"+new Date().getTime(),$("#form1").serialize(),function(data){
         $("#content").html(sysBBS+data+"</span>");
      });
      $("input[name='content']").val("").focus();
   // }
}
部分Servlet的代码:public String sendMessage(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        // 1.接收数据 。
        System.out.println("sendMessage invoke....");
        String from = req.getParameter("from"); // 发言人
        String face = req.getParameter("face"); // 表情
        String to = req.getParameter("to"); // 接收者
        String color = req.getParameter("color"); // 字体颜色
        String content = req.getParameter("content"); // 发言内容
        String sendTime = new Date().toLocaleString(); // 发言时间
        // 获得ServletContext对象.
        ServletContext application = getServletContext();
        //  ServletContext中获取消息
        String sourceMessage = (String) application.getAttribute("message");
        // 拼接发言的内容:xx yy xxx
//        sourceMessage += "<font color='blue'><strong>" + from
//                + "</strong></font><font color='#CC0000'>" + face
//                + "</font><font color='green'>[" + to + "]</font>说:"
//                + "<font color='" + color + "'>" + content + "</font>"
//                + sendTime + "<br>";

        sourceMessage +=from + face + " " + to + "   " + content + "  " + sendTime +"<br>";
        // 将消息存入到application的范围
        application.setAttribute("message", sourceMessage);
        application.setAttribute("from",from);
        application.setAttribute("towho",to);
        User sourceMess = new User();
        sourceMess.setUsername(from);
        sourceMess.setTousername(to);
        sourceMess.setContext(content);
        sourceMess.setTime(sendTime);
        UserService us = new UserService();
        us.sourceMess(sourceMess);
        return getMessage(req,resp);
    }
    /**
     * 获取消息的方法
     *
     * @throws IOException
     */
    public String getMessage(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        String message = (String) getServletContext().getAttribute("message");
        String sendername = (String) getServletContext().getAttribute("from");
        String acceptername = (String) getServletContext().getAttribute("towho");
        if (message != null ){
            resp.getWriter().println(message);
        }
        return null;
    }

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

三滑稽甲苯 发表于 2022-7-1 17:25
最好不要用用户名判断,万一人家名字一样就不好了
hy_cicada 发表于 2022-7-1 17:30
头像被屏蔽
jmfjmf 发表于 2022-7-1 19:04
 楼主| chenmu736 发表于 2022-7-2 08:56
hy_cicada 发表于 2022-7-1 17:30
用用户ID来判断,这样就不会出现重复了

有道理我去试试
头像被屏蔽
xiadongming 发表于 2022-7-3 08:14
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表