ajax聊天室(JSP版)2

原创 2007年09月13日 21:56:00

这一回主要谈谈上一篇文章给出的三个Java类的代码。

消息类(Message)的代码很简单,只是普通的Javabean。唯一值得注意的是消息发送时间并没有使用Java的Date类型,而用了long数据类型。这样做是为了节省存储空间,加快运算,只有在需要显示时才进行Date类型的转换。

publi cclass Message {
    // 属于某房间(Room)
    private String room;
    // 消息内容
    private String content;
    // 发送到某用户(User)
    private String to;
    // 由谁发送的,即属于属于User
    private String from;
    // 发送时间
    private long date;

     ...         }

聊天室类(Room)包含的信息比较多,除了本身的基本属性,还需要有该房间的所有用户和消息。因为用户需要不停地更新聊天信息和用户列表,特别增加了聊天信息最近更新时间和用户列表最近更新时间的两个属性,通过它们来判断是否有新信息给用户传输。

用于保存信息的ArrayList对象不是直接使用Java的API,而略加修改,在add方法中添加了额外处理。同理,保存用户列表也如此。

public class Room {
 
    // 信息
    private List<Message> messages = new ArrayList<Message>(50) {
       public boolean add(Message message) {
           if (this.size() > maxMessage)
              this.clear();
           boolean b = super.add(message);
           if (b)
              messageUpdateTime = System.currentTimeMillis();
           return b;
        }
    };

...

用户类(User)并不一个纯javabean,而是实现了HttpSessionBindingListener接口的。这样做是为了在用户离开后session失效前,自动从用户列表中删除。

public class User implements HttpSessionBindingListener {
    publicvoid valueBound(HttpSessionBindingEvent arg0) {
       ChatroomManager.newInstance().addUserToRoom(this);
    }
    publicvoid valueUnbound(HttpSessionBindingEvent arg0) {
       ChatroomManager.newInstance().removeUserFromRoom(this);
    }
    // 所在房间
    private Room room;
    // 用户名
    private String name;
    // 最后获取聊天信息的时间
    private long lastGetMessage;
    // 最后获取用户列表的时间
    private long lastGetUserList;

有了这三个类,并且确定他们之间的关系,聊天室的业务逻辑功能基本确定了。下面只要加以实现相应动作即可。

附图:

一对一网页聊天 jsp+js+ajax+servlet+tomcat+mysql

初学javaweb,很想做一个网页版的一对一聊天系统,但是在网上查了一下发现并没有相应的资源,网页聊天室倒是有很多,一个原因是B/S与C/S相比不适合做实时通讯,另外可能是一对一聊天做起来比较难(我一...
  • YaYhui
  • YaYhui
  • 2016年04月17日 00:22
  • 1381

ajax聊天室(JSP版)1

初学JSP编程,一般喜欢做做留言板、聊天室、购物网站或论坛等。下面我详细说说如何实现一个基于WEB的无刷新聊天室。注:参考了Struts版的 ajaxchat。平台或技术:Windows XP,JSP...
  • Windy83
  • Windy83
  • 2007年09月13日 01:34
  • 3895

我写了一个jsp+ajax简单聊天室

 [Y2T22]首页 - 讨论区 - 我写了一个jsp+ajax简单聊天室 返 回|发 帖回 帖 上一篇下一篇 >   ***中文问题,有兴趣可以解决一下***************/  /*...
  • wang_zilu
  • wang_zilu
  • 2009年02月20日 10:28
  • 1553

JSP无刷新聊天室

login.html 登录聊天室 登录聊天室
  • xue1225go
  • xue1225go
  • 2012年03月15日 09:59
  • 5950

Ajax jQuery Web聊天室

实现界面: 1.进入聊天室前必须进行登录,保存用户基本信息,为了显示在线人数 2.登录聊天时,调用Ajax的全局函数$.ajax(),将获取的用户名和密码数据向处理逻辑发送,使用AjaxStart...
  • Ace_0811
  • Ace_0811
  • 2015年03月09日 17:41
  • 1064

基于jQuery的Ajax聊天室程序

一个基于Ajax无需刷新的聊天室程序,实现多用户在网页上聊天。 参考:《锋利的JQuery》 源码下载:点击打开链接...
  • zhu1988renhui
  • zhu1988renhui
  • 2012年10月06日 15:06
  • 4278

ajax聊天室(JSP版)6

现在剩下JSP页面的HTML代码和JS代码了。直接贴代码,哪天用到了可以回头看看。chat.js文件,用到了Prototype.js/** *ajax聊天室js代码 *聊天室version1.0 *2...
  • Windy83
  • Windy83
  • 2007年09月20日 22:24
  • 2975

ajax聊天室(JSP版)4

Servlet类真的没什么好说的。先写个BaseServlet基类,以后的几个Servlet类就直接继承它,而不是HttpServlet。package org.jvk.chatroom.servle...
  • Windy83
  • Windy83
  • 2007年09月17日 23:24
  • 1938

ajax聊天室(JSP版)3

有了以上三个javabean,只是==有了三个数据表(事实上,如果要保存聊天信息在数据库中,建立表进行插入删除更新即可),还要有掌控全局的ChatroomManager类。下面先给出完整代码。pack...
  • Windy83
  • Windy83
  • 2007年09月15日 20:40
  • 2574

ajax聊天室(JSP版)5

用来的Java类,除了上述几个外,就剩下以下几个了。两个过滤器类,一个用来过滤字符,一个用来过滤未登录的用户。package org.jvk.chatroom.filter; import java....
  • Windy83
  • Windy83
  • 2007年09月19日 21:18
  • 5563
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ajax聊天室(JSP版)2
举报原因:
原因补充:

(最多只允许输入30个字)