本人正在学习JSP,在阶段项目开发中遇到两个问题:
1.用户登录“在线聊天室”可以聊天,用的是application实现在的,但是如何实现无空隙刷新页面显示新消息呢?我现在用的是<meta http-equiv="refresh" content="3" />,每次刷新页面闪得非常厉害,看着头晕。
2.当用户非法退出聊天室的时候(比如关机,直接关闭页面等),如何捕获是否确认退出的提示?
请各位高手指教

解决方案 »

  1.   

    1.AJAX
    2.?
    个人愚见 仅供参考
      

  2.   

     在Body标签中加入onbeforeunload=return(false)
    即可,如下:<body onbeforeunload=return(false)>就能提示是否关闭。
    我现在用的是<meta http-equiv="refresh" content="3" />,每次刷新页面闪得非常厉害,看着头晕
    你可以设置用户提交消息的时候刷新页面。这样的话,每发布一条信息,页面都会刷新。
      

  3.   

    用ajax进行局部刷新吧,没必要去刷新整个页面!
      

  4.   

    ajax可以实现页面局部刷新的!
      

  5.   

    这个你必须要用ajax来实的。我有做过。确实很好玩的。非法退出的你必须要使用监听器来解决。
      

  6.   

    用AJAX实现吧,实现起来也不难。。
      

  7.   

    最适用的是AJAX。
    用推技术可以实现实时更新(有消息来才更新),但是麻烦一点,要自己写一个WEB服务器。
      

  8.   

    用jquery最好。如果懂dwr用dwr试试看。不知道就自己写咯如下,仅供参考,了解详情请查看网站
    http://www.w3school.com.cn/ajax/ajax_browsers.asp
    另外提供一个很好的学习网站:http://www.w3cschool.com.cn
    <html>
    <body><script type="text/javascript">function ajaxFunction()
     {
     var xmlHttp;
     
     try
        {
       // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
        }
     catch (e)
        {  // Internet Explorer
       try
          {
          xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
       catch (e)
          {      try
             {
             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
             }
          catch (e)
             {
             alert("您的浏览器不支持AJAX!");
             return false;
             }
          }
        }
     }
    </script><form name="myForm">
    用户: <input type="text" name="username" />
    时间: <input type="text" name="time" />
    </form></body>
    </html>
      

  9.   

    72722423群 交流java技术,Android技术。谢谢
      

  10.   

    你可以把用户发送的消息存在服务器上,然后页面里利用 ajax定期去查询服务器看是否有新消息,如果有新消息则返回新消息并将新消息添加在你的显示内容后面,这个显示内容的添加利用js的dom操作就行了。
      

  11.   

    楼主用到的是页面刷新,其实做聊天的东东,最好结合ajax来实现,这算是回答你的第一个问题吧,
    建议使用dwr或jquery。
    第二个问题,如何处理用户的非正常退出聊天系统,我的思路是这样的:用户登录时可以拿到用户的session信息,然后以map形式存储用户与session的关系,把这个map放入application
    然后设定特定时间在这个map里遍历,看有没有人的session已经丢失,丢失的话,移除就OK了。
    当然,正常退出的话最好也提供方法,从applicatioing的map种移除用户信息。
      

  12.   

    聊天室页面用的是框架,没有<boday>标签,怎么办?
      

  13.   

    第一个应该是用AJAX比较好;第二个感觉还是要用到事件监听,当某个线程读取数据抛出异常时,即该用户退出
      

  14.   

    第二个思路比较好,但是放在application里会不会使服务器负荷过大?
      

  15.   

    关于页面刷新,我还没有学到ajax,不懂。
    对于第二个问题,我实现的思路也是这样的,合法退出的时候判断application中存在当前用户,然后再remove。关键是非法退出要怎样获取是否退出的提示,用户选择是则remove,选择否则回到聊天室???
      

  16.   

    页面的无闪烁刷新我已经实现了 用的是ajax  但非法退出还没搞定 请各位高手多多指教啊
      

  17.   

    ajax和jQuery 顶  可具体怎么实现啊
      

  18.   

    ajax 局部刷新, 可行!!!
      

  19.   

    使用Ajax是这样实现的
    <body onload="getAjaxOutput()">
    <div id="mydiv"><br> 
    </div>
      </body>   <script type="text/javascript">
        var xmlHttpRequest;
    function createXmlHttpRequest(){
    if(window.ActiveXObject){
    return new ActiveXObject("Microsoft.XMLHTTP");
    }else if(window.XMLHttpRequest){
    return new XMLHttpRequest();
    }
    }

          function getAjaxOutput()
          {
      var url = "testMessage.jsp"; xmlHttpRequest = createXmlHttpRequest();
    xmlHttpRequest.onreadystatechange = AfterAjax;     
        xmlHttpRequest.open("GET",url,true);
        xmlHttpRequest.send(null);  
       
        window.setTimeout("getAjaxOutput()",1000);
          }
          function AfterAjax()
          {
             if(xmlHttpRequest.readyState == 4){     
                if(xmlHttpRequest.status == 200){
                    document.getElementById("mydiv").innerHTML=xmlHttpRequest.responseText;
                    document.body.scrollTop=2000;
                      
                }
            }
          }
       </script>
    自己可以试试看