server为tomcat.
例如:server有一个List,browser有个table来显示这些List中的数据.
当像server端的List中添加数据时,就在broswer的table中添加这条新记录.(实时添加)
broswer与server有session.这可能实现吗?

解决方案 »

  1.   

    在客户端启用 xmlhttp 以某时长的间隔向服务器发出请求以达到交互
      

  2.   

    您说的是客户端实时更新页面显示的数据吧?对于目前采用的http协议的页面访问技术,只能是客户端发出请求,服务器回应请求,把数据发给客户端(浏览器),不能实现服务器端主动的向客户端发送数据。如果要实现你说的功能,一个是客户端定时刷新或者通过socket通信向客户端发数据
      

  3.   

    首先B/S模式对数据是拉模式,就是只能是客户端主动的向服务端请求数据,而服务端在B/S结构下是没有办法主动的向客户端发送数据的。所以楼主的问题严格上说在B/S模式下是不能解决的。当然可以通过客户端定时向服务端请求数据来近似实现。
      

  4.   

    可以, 聊天室就是这样的方法.只要HTML没有发结束串, http连接就不中止, 你就可以不断的向这个连接发数据
      

  5.   

    http是无状态协议  所谓无状态就是客户端连接服务端发出请求  服务器接受请求给出一个响应然后连接断开 这样的话客户端和服务端就是两个不相关得了;
    如果要再次获得数据那么就得再次请求,从新连接,再次请求.......所谓session可以把它看作是一个存放在服务端得口袋  你第一次操作可以把你操作得一些信息放进这个口袋  第二操作得时候你就会把这个口袋得编码传给服务器  服务器通过编码找到你的口袋  如果你需要你上一次得信息那么就取出  然后把你这一次得也存入这个口袋  在断开连接  以此类推所以说 你想让服务器来检测你的客户端  这个是不行得  协议不支持 不过你可以通过javaScript来辅助完成  因为javascript是作用于客户端得代码片断当然ftp协议是有状态得
      

  6.   

    使用ajax啦,不需要你刷新页面的,你只需要在服务端控制一下哪个ip是上次取了哪些内容,这次把这个ip没有取到的内容送到客户端.ie则使用动态html把这些送来的内容在table动态新增tr显示出来.
      

  7.   

    不对,应该是根据sessionid判断上次这个session去了哪些内容
      

  8.   

    ajax也是要想服务器请求数据的,还是增加服务器的负担,如果非要实现这种要求,TinyJimmy(Jimmy) 的想法是可行的,也就是自己做一个socket的服务器,连接后不断掉socket,当有新数据的时候,再次向socket中写数据,客户端就可以接收到了,客户端浏览器看到的是页面永远下载不完。
      

  9.   

    使用socket服务器,那同样也是要增加服务器负担.
    我想问一下,socket服务端怎么知道有新数据来了呢?
    socket客户端怎样与ie进行通信
      

  10.   

    传说用server push的方式可以实现当client发出请求后,server 与 client不断开连接,前提是需要设置response的某个值。网上查了几篇文章,不大明白。大家说说自己的想法吧
      

  11.   

    恩。没戏。B/S是客户端请求服务端,只能在客户端跑线程不断试探Server才行。
      

  12.   

    TinyJimmy(Jimmy) 说的对,原理就是这样了。具体实现参看:
    http://community.csdn.net/Expert/topic/4327/4327158.xml?temp=.6255609
    判断链接是否断开
    http://community.csdn.net/Expert/topic/4210/4210348.xml?temp=.8907587
      

  13.   

    采用ajax 或者是 xmlHttp呀!
      

  14.   

    使用插件的方式难以实现跨浏览器(得针对不同的浏览器写不同的插件)。
    ajax是个不错的选择,但是它依然不能实现实时,因为它也是在CLIENT端设置时间来定时取回数据的因此使用SERVER PUSH技术也许是唯一的选择。查了一些文章,实现SERVER PUSH大约有两种方式:
    1. 自己写一个server socket,让浏览器来连接这个SOCKET;但是它的弊端就是不能我HTTP SERVER    的端口
      

  15.   

    使用插件的方式难以实现跨浏览器(得针对不同的浏览器写不同的插件)。  
    ajax是个不错的选择,但是它依然不能实现实时,因为它也是在CLIENT端设置时间来定时取回数据的  
     
    因此使用SERVER  PUSH技术也许是唯一的选择。  
     
    查了一些文章,实现SERVER  PUSH大约有两种方式:  
    1.  自己写一个server  socket,让浏览器来连接这个SOCKET;但是它的弊端就是不能我HTTP  SERVER  的端口相同。
    2.  要设置response的某个值.(这中方式我喜欢),但是不知道怎么实现。郁闷。:(
      

  16.   

    贴个例子:
    <%@ page contentType="text/html; charset=GB2312" %>
    <%@ page import="com.jstrd.sbgl.entity.*"%>
    <%@ page import="com.jstrd.sbgl.common.*"%>
    <%@ page import="java.text.*"%>
    <%@ page import="java.util.*"%><% String queryStr = "select * from sb_yhxxb where 1=1 ";
     Sb_Yhxxb_Ope sb_yhxxb_ope = new Sb_Yhxxb_Ope(); String k_name = request.getParameter("k_name");
     
     if(k_name!=null && !k_name.trim().equals(""))
                queryStr += " and k_name ='" + k_name.trim() + "'";
                
    System.out.println(queryStr);
    ArrayList list = sb_yhxxb_ope.query(queryStr);
    if(session.getAttribute("list")!=null){
        session.removeAttribute("list");
    }
        session.setAttribute("list",list);
    if(session.getAttribute("queryStr")!=null){
        session.removeAttribute("queryStr");
    }
        session.setAttribute("queryStr",queryStr);
    response.sendRedirect("yhxx_query_result.jsp");
    %>
      

  17.   

    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="com.jstrd.sbgl.entity.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="com.jstrd.sbgl.common.*"%>
    <html>
    <head>
    <title>用户信息</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
      <link rel="stylesheet" type="text/css" href="../allpageCSS.css">
    </head><body bgcolor="#FFFFFF"><td bgcolor="#3366FF">
                <table border="0" cellpadding="0" cellspacing="0" width="7">
                  <tr>
                    <td></td>
                  </tr>
                </table>
    </td>
       <div align="center">
         <form action="yhxx_del.jsp" method="post">
           <%ArrayList list = (ArrayList)session.getAttribute("list");%>
        <table width="100%" height="110"  border="1" bordercolor="#B5C7A0">
    <tr>
             <td height="104" valign="top" bordercolor="#B5C7A0"><div align="center">
               <table width="100%"  border="0">
                 <tr>
                   <td bgcolor="#B5C7A0"><div align="center"><font color="#000000" size="-1">用户信息列表</font></div></td>
                 </tr>
               </table>
               </div>
               <div align="center">
    <table width="100%" border="1" align="center" cellpadding="0" cellspacing="1" bordercolor="#B5C7A0" >
                     <tr>
                       <td width="7%" nowrap CLASS=cSYS_GridHeadCell><div align="center"><font color="#000000" size="-1">选 择</font></div></td>
                       <td width="7%" nowrap CLASS=cSYS_GridHeadCell><div align="center"><font color="#000000" size="-1"> 用户编号 </font></div></td>
                       <td width="7%" nowrap CLASS=cSYS_GridHeadCell><div align="center"><font color="#000000" size="-1"> 用户名称 </font></div></td>                   <td width="6%" nowrap CLASS=cSYS_GridHeadCell><div align="center"><font color="#000000" size="-1">修改</font> </div></td>
                     </tr>
                    <%
                    if(list!=null && list.size() >0){
                      for(int i=0;i < list.size(); i++){
                          Sb_Yhxxb sb_yhxxb = (Sb_Yhxxb)list.get(i);
                  %>
                     <tr onmouseover=javascript:this.style.backgroundColor='#D0FAC0' onmouseout=javascript:this.style.backgroundColor='#ffffff'>
                       <td style='Border-style: Solid; Border-width: 1px;' nowrap><div align="center"><font color="#000000">
                         <input type="checkbox" name="checkbox" value="<%=sb_yhxxb.getK_id()%>">
                       </font></div></td>
                       <td style='Border-style: Solid; Border-width: 1px;' nowrap><div align="center"><font color="#000000"><%=i+1%></font></div></td>
                       <td style='Border-style: Solid; Border-width: 1px;' nowrap><div align="center"><font color="#000000"><%=Fiter.UnicodeToChinese(sb_yhxxb.getK_name())%>&nbsp;</font></div></td>                   <td style='Border-style: Solid; Border-width: 1px;' nowrap><div align="center"><font color="#000000"><a href="yhxx_modify_index.jsp?k_id=<%=sb_yhxxb.getK_id()%>"><font size="-1">修改</font></a></font></div></td>
                     </tr>               <%}
                    }else{%>
                       <tr>
                       <td style='Border-style: Solid; Border-width: 1px;' colspan="5"><div align="center"><font color="#000000">#无记录</font></div></td>
                       </tr>
                       <%}%>
                 </table>
               </div>
               <table width="100%"  border="0">
                 <tr>
                   <td bgcolor="#B5C7A0"><div align="left"><strong>
                      <input type="button" name="add" value="新增" onclick="window.location='yhxx_add_index.jsp'" class="button">
                      <input type="submit" name="delete" value="删除" class="button">
                   </strong></div></td>
                 </tr>
               </table></td></tr>
        </table>
         </form>
         <h1><br>     </h1>
    </div>
       <p>&nbsp;</p>
    </body>
    </html>
      

  18.   

    比较好的方法是研究一下推技术
    现实一点的方法是ajax,刚写了一篇文章,推荐一下
    http://blog.csdn.net/infowain/archive/2006/07/19/942384.aspx