站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题[求助]JSP的突法奇想~

[求助]JSP的突法奇想~

摘要: [求助]JSP的突法奇想~


曾经在某个网站上看过这样一个功能,类似于QQ中的一个功能:当你的一个好友上线时,会弹出一个即时消息,然后再慢慢消失。

请问在B/S结构中,或者是说在JSP中如何实现呢?


用ajax,定时访问数据库,查找新会员,有就弹出提示框!


这又不是单单指新会员。
它只是是上线的


someone is login....., mark status as online=true ;

query his friends who are online too...

send message to notice he is online now....


社区短消息
AJAX


someone is login....., mark status as online=true ;

query his friends who are online too...

send message to notice he is online now....

这样只要朋友在线就会不停得提示


加一个令牌怎么样


再加一个标志符控制,比如flag,默认flah=0,当status=online的时候,观察flag是否为0,如果为0就发出提示信息,如果是1就不发了


1.做一张消息表: message,字段如下:
id fromId toId content createTime isRead

当一个人上线时,就会给他(她)的朋友发一个消息,说明自己上线

2.在客端用ajax定时访问服务器,查询自己有没有新消息.如果有消息则在浏览器端显示,并在数据库中把message表中的那一条数据的"isRead"置为已读


flag不行,不能实现对多个好友的提示,也就是说如果上线的人有多个好友在线,而其中又有一部分人(不是全部在线好友)设定了上线提示,那样的如何实现?
我个人觉得应该从session的监听入手,用session监听在线用户数量想必大家都知道,那么当监听到有自己关注的用户登陆的时候,发出提示,就应该能实现搂住的想法了。 个人观点,仅供参考


补充一下:
1.当一个人上线时,就会给他(她)的朋友发一个消息,说明自己上线
的意思是,往message中写一条信息,并且isRead为未读(至于怎么标记,那就看各人爱好了,有人用boolean型,有人用0和1,不过我觉得用0和1更具有可扩展性)

2.至于如何判断是否上线,我想这个我就不用说了吧


感谢大家热情的帮助

谈谈我的看法

我曾经做过类似QQ的聊天软件,是C/S结构的

我觉得让客户端不断的向服务器查询有没有新消息不妥,太耗资源了

不如让客户端这里建一个线程,来监听服务器主动发来的字符流string=bufferedReader.readLine();

如果string.equals("你的朋友某某上线了");

就在屏幕左下角慢慢浮现出一个窗口(窗口不行的话,别的也行),再慢慢的消失

现在我的问题是不知道用什么技术实现客户端这里需要的功能:
怎么样才能浮现出一个窗口,然后慢慢消失

JSP能实现吗?还是要用到AJAX呢?或者是其他的?




慢慢的消失?
我做的东东你不点它的按纽它死都不会消失。
学习一下先。


我是用的JavaScript特效,网上有源码什么网页制作百宝箱之类的
你去下个看看吧!


楼主的想法是好的,但就楼主下面的两句话,我想说两句:

"我觉得让客户端不断的向服务器查询有没有新消息不妥,太耗资源了"
不如让客户端这里建一个线程,来监听服务器主动发来的字符流string=bufferedReader.readLine();"

1.请楼主看一下Htpp协议
2.请楼主搞明白什么是b/s和c/s

http是基于请求/响应范式的,如果不请求是不能和服务建立连接的.如果能和服务器建立一个线程,就也就成java版的c/s了!


至于怎么样才能浮现出一个窗口,然后慢慢消失,我觉得你去网上找一个JS特效的框吧. scriptaculous.js好像能实现你要的功能.


djy1135(晨阳) 说的很有道理,scriptaculous.js这个能传过来一份吗,我的QQ是247705592


可以用java applet向服务器URL定时发送heartbeat消息,
和ajax类似,但应该更效率,
缺点是不是所有浏览器都支持applet,比如ie6 。


记下来.


我用C/S写过类似QQ的聊天软件和一个文件传输软件(实现聊天功能).
但是“文件传输软件”没有一个很好的办法把字节流和字符流区分开,只能靠流包装解决,但是缓冲区过大的话容易引起数据丢失,所以缓冲区设得很小,而且是单线程的,有哪位仁兄用过多线程解决的?


补充一下,是一个Socket一个线程,有谁用了一个Socket多个线程解决的吗?


慢慢消失 就是传说中的”黄褪技术“吧 利用AJAX 不过相关资料我一直没查到
哪位有贡献一下啊





一般都是客户端定期查询数据库状态了

如不想客户端定期重发请求轮询,只能服务器端记录,
每个用户的session应该有记录当前user的数据库id吧?
用SessionListener把每次登录成功的session记录在某单个实例的concurrence的Map中,key可以是userid或sessionid
那么当某个login 的user登录后从数据拿到friend的userid集合,根据Map中的记录查询上述session集,拿到对应的句柄,设值用于提醒,
那么下次这些friend的请求到达时检查session发现标识则出现提醒,然后把标识清掉,
这是服务器端作记录的思路



是用黄褪技术吗?现在就是找不到资料,有提供资料丰富的AJAX论坛或网站的话给60分!!


建议使用AJAX技术 比较方便快捷


↑返回目录
前一篇: 用Eclipse3.1 + Myeclipse4.0 + Tomcat5.0 + j2sdk1.5 搭建J2EE开发环境
后一篇: 请教上传文件的同时,表单里的参数不在可用的问题