每条聊天记录一个类,然后把类放到map中,key为两个人的id写个定时器,用spring封装的定时器也行,定时去取map中的值,然后保存到数据库中map的名字可以用时间表示

解决方案 »

  1.   

    开个线程,定时检查application里的数据。可以定时往数据库写,也可以在消息达到一定条数时,才写数据库。
    每个客户端定时从服务器取消息不行吗?
    如果是客户端PULL的方式,你就没有这个烦恼了,呵呵。收到请求都放application。谁爱看,谁自己取。
      

  2.   

    一边实践,一边集思广益,白天不能上Q,所以群邮件讨论吧。------------------------------
    (群邮件群): 22273653
    各位白天不能上Q或者其他原因,习惯用群邮件交流的同志请加群。
    涉及话题 : J2EE,Flex,JS,领域建模
    群号码 : 22273653
      

  3.   

    对于第一个问题,我的观点和kokobox兄弟的一样
    写个定时器,定期向数据库保存数据
      

  4.   


    我大概理解你的意思了,可以定义一个聊天记录类,有这样几个字段,(发言人的id,发言人对谁发言再记录一个id,发言内容,系统当前时间戳),我可以把时间设成map的key,然后排序。
      

  5.   


    我不知道这个怎末做,我的理解好想JSP是应答式的工作方式,只有我想服务器发送了请求才能收到服务器的反馈,你的意思是不是在每个JSP页面里面都include一个页面,这个页面定时执行一个js函数,这个函数想服务器索取最新的聊天记录。
      

  6.   

    js脚本里写个setTimeout循环调用自己,定时的用Ajax从服务器取数据
      

  7.   

    我的毕业设计做的和这个差不多,当时刚学jsp写的很烂。
    我的思路是把你消息写到jsp
    <!%
       Map mapMsg=new HshMap();
    %>
    的map中,这样就可以减少对Application的访问,毕竟其他页面可能也要用Application.
    需要注意要把map的读取串行化。至于消息的发送你可以使用基于长连接的服务器推技术,很简单,Ibm的网站上有这方面的资料
      

  8.   

    聊天室的内容保存在HASHMAP中,其中有两种方案,一种是以字符串的形式储存,一种是建立单独的聊天POJO,将对象放进MAP里面,在聊天的运行上我推崇第一种,在数据保存上,我推崇第二种。
    可以通过AJAX定时刷新页面获取最新数据,也可以通过触发器,原理类似于工作流。
      

  9.   

    网上有很多AJAX聊天室的例子,楼主可以借鉴一下
      

  10.   

    关于LZ的问题,推荐使用DWR框架的反向AJAX机制来解决,因为在反向AJAX中,服务器端可以监听到客户端当前页面的信息。具体的可以上网查查,也可以下载官方示例,里面有完整的AJAX聊天室代码。
      

  11.   

    无刷新的聊天室的话 你只能用AJAX放个JS定时去后台取数据好一点的话(至少不用总是让AJAX去后台取数据) 那就在页面套个APPLET 那样的话不仅不需要刷新 而且还能实时显示数据 完美的很
      

  12.   

    前后台交互不多说,要么ajax定时请求,要么建立长链接服务器推送。但是数据读写这块,最好是不要用map,或者application这种方式,一般用这些,都是用来做缓存的,但是现在时一个聊天室,读写一定很频繁,而且有时间上的先后顺序,你要用的话,一定要保证一个读写安全,对map要加锁,还是读DB吧
      

  13.   

    为什么要用application直接建立一个serivce类 在里面设个集合属性 专门存放聊天记录。通知刷新的话就用JS有一个叫set***的函数来的,就是专门刷新的
      

  14.   

    其实这是一个ajax的数据推送,也就是当服务器端的数据发生改变以后,立刻主动推送到客户端!
    这个技术我在网站上没找到相关资料!但是的确有!