javaweb聊天室该怎么实现私聊功能
最近在网上学习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;
}
最好不要用用户名判断,万一人家名字一样就不好了 用用户ID来判断,这样就不会出现重复了 hy_cicada 发表于 2022-7-1 17:30
用用户ID来判断,这样就不会出现重复了
有道理我去试试
页:
[1]