servlet如何主动给客户发送response
效果做成QQ那样,一个账号在另一个地方登陆后,原来的马上离线。
要不要用线程啊?注:servlet主动,不是用户先发送request
效果做成QQ那样,一个账号在另一个地方登陆后,原来的马上离线。
要不要用线程啊?注:servlet主动,不是用户先发送request
解决方案 »
- eclipse导入web项目后,无法选用tomcat打开
- [在线等,高分]如何设计关闭网站通知?
- Tomcat下用BLOB入库出现的问题~~急
- java 问题高手请进
- 面试官问项目经验,怎么说比较好。
- myeclipse 6.01+jsp+tomcat6.0+servlt中jsp跳转调用servlet空指针错误,不知道哪里错误,求助阿!!!
- ssh+jbmp4.4启动resin 报错
- 顶上!
- 有过在servlet中连接oracle数据库的朋友请帮忙看看,看不出错在哪里...
- 谁能说说java2中乱码问题的完整解决方案,分不够另加!再不解决乱码问题,我快要炸了!!!(200分)
- Jstree json 格式
- 求助!!jsp在本地运行好使,换到服务器上出错。
2.登陆的话可以用public static HashMap<String,Object>维护一个在线列表,也可以使用application域保存
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
http://www.ibm.com/developerworks/cn/web/wa-lo-w2fpak-comet/index.html
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
http://www.ibm.com/developerworks/cn/web/wa-lo-w2fpak-comet/index.html
BS模式servlet不能主動,還是要客戶端request的請求后服務器處理返回的
他们是相对的,怎么能独立出来呢
如果你非要这样做,可以找一些局部刷新的技术,比如ajax等 wicket也可以的
之所以知道你的QQ的再次登录了, 是因为你登录的时候发送了http请求,
在数据库中估计存在这样的字段, online 1代表在线, 0代表离线, 当第一次登录的时候
就设置为在线状态, 当你再次登录了时候, 会上数据库验证这个字段,如果是为1, 会向你提示已经登录了.
<%@page contentType="text/html;charset=gb2312"%>
this is a.jsp!
<%!
class Task implements Runnable{
private HttpServletResponse response;
private HttpSession session;
private JspWriter out;
public Task(HttpServletResponse response,HttpSession session,JspWriter out){
this.response=response;
this.session=session;
this.out=out;
}
public void run(){
while(true){
try{
out.println("waiting!");
if(session.getMaxInactiveInterval()>=1){
response.sendRedirect("b.jsp");
}
Thread.sleep(100);
}catch(Exception e){
e.printStackTrace();
}
}
}
}
%>
<%
if(session.isNew()){//如果session是新创建的
out.println("create a new session!");
new Thread(new Task(response,session,out)).start();//启动一个新线程
}else out.println("session already exists!");
%>
//我本来想,打开a.jsp等着不动,看看能否自动跳转到b.jsp,结果没有,而且还打出一大堆错误信息,
//可能是resposne已经关闭了,问哪个高手用线程实现一下看看.....
其实通俗来说就是网站server和浏览器客户端保持长连接,当有事情需要的时候server端给所有保持在长连接的客户发送消息。达到了同时同步,
你可以去http://www.pushlets.com/去学学,不知道你用什么语言其他没法帮你 但是上面有很多例子可以去看看