好象b/s结构很难解决啊,因为http协议的关系,applet应该差不多.非要用html页面的话,就不断的刷新.

解决方案 »

  1.   

    Observer模式可以实现这个问题,当Subject的数据改变了就通知相应的Observer进行更新,具体实现可参考GOF的设计模式一书,个人建议呵呵.
      

  2.   

    kingofhawks(蓝鹰)是在胡说。b/s结构只有客户端主动请求数据更新。可以一秒请求一次,检查数据版本或更新时间。然后下载最新数据。 不刷新页面可以用iframe和xmlhttp组件实现.
      

  3.   

    观察者模式。/*
     * 虽然网上商店形式多样,每个站点有自己的特色,但也有其一般的共性,单就"商品的变化,以便及时通知订户"
     * 这一点,是很多网上商店共有的模式,这一模式类似Observer patern观察者模式.
     * 具体的说,如果网上商店中商品在名称价格等方面有变化,如果系统能自动通知会员,将是网上商店区别传统商店的一大特色.
     * 这就需要在商品product中加入Observer这样角色,以便product细节发生变化时,
     * Observer能自动观察到这种变化,并能进行及时的update或notify动作.
     */import java.util.Observable;
    import java.util.Observer;class SimpleProduct extends Observable
    {
    private String name;
    private float price;


    /**
     * @return Returns the name.
     */
    public String getName() {
    return name;
    }
    /**
     * @param name The name to set.
     */
    public void setName(String name) {
    this.name = name;
    super.setChanged();
    super.notifyObservers(name);
    }
    /**
     * @return Returns the price.
     */
    public float getPrice() {
    return price;
    }
    /**
     * @param price The price to set.
     */
    public void setPrice(float price) {
    this.price = price;
    super.setChanged();
    super.notifyObservers(new Float(price));
    }
    }class NameObserver implements Observer
    {
    private String name = null;

    public void update(Observable o, Object arg)
    {
    this.name=arg.toString();
    System.out.println("hey, product name is changed to:"+this.name);
    }
    }class PriceObserver implements Observer
    {
    private float price = 0;

    public void update(Observable o, Object arg)
    {
    if((Object)o instanceof Float)
    {
    this.price=((Float)arg).floatValue();
    System.out.println("hey, product price is changed to:"+this.price);
    } }
    }
    public class ObserverTest { public static void main(String[] args) 
    {
    SimpleProduct product = new SimpleProduct();
    NameObserver nameObserver = new NameObserver();
    PriceObserver priceObserver = new PriceObserver();
    PriceObserver priceObserver2 = new PriceObserver();

    product.addObserver(nameObserver);
    product.addObserver(priceObserver);

    product.setName("orange");
    product.setPrice(10f);
    product.setPrice(20f);


    }
    }
      

  4.   

    楼主提问的时候已经说了答案
    ---
    请教高手
    我想用一个JSP页面显示用户的信息,关键是要不段刷新信息,
    后台的数据一旦发生变化就要立即显示在页面,请问该如何实现?
    请高手指点,最好有关键代码!
    感谢!!!
    ---
    除了不断刷新,还想用什么,呵呵
      

  5.   

    不能说直接监视数据库的数据,只是当product发生变化后,可以马上对用户做一些处理,或者也可以将变化后的数据存储到数据库。
      

  6.   

    上面的程序应运结果怎么是这样:
    hey, product name is changed to:orange
    hey, product name is changed to:10.0
    hey, product name is changed to:20.0不是应该是这样吗:
    hey, product name is changed to:orange
    hey, product price is changed to:10.0
    hey, product price is changed to:20.0 mascotzhuang(基督山伯爵) 能不能解释一下.
      

  7.   

    数据变化之后通知控制器,控制器转发给响应的JSP页面进行刷新.数据变化当然不是去看数据库,在你的应用里面你的对象自己知道他的状态什么时候会改变啊,那就是通知Observer去刷新的时机.
      

  8.   

    有一种方式叫“服务端推” 以前是基于C/S模式下使用的方式, 不过基于B/S模式下照样可以。 你可以建立一个servlet,当客户端请求过来后你并不一下子完成这个http请求,而是保持连接, 后台可以使用线程来监控某个数据或者某些数据,一旦发现数据变化,立即把数据推向客户端。 其实这种方式是有现成的例子的,不过大多是用CGI实现的,比如新浪的篮球比赛文字直播。 我用这种技术写过一简单的聊天室,如果想研究研究可以找我。
      

  9.   

    楼上的意思就是说用代理类去做Observer模式里的Subject拉,但是这个代理主要实现什么功能呢?如果是虚代理的话,那也要看他的数据库操作是否有那种必要,否则的话也不是非常需要哦,毕竟在应用中引入更多的概念会使得理解相对复杂.
      

  10.   

    http://www.it190.com/edu/web/CGI/index2/200507/8725.html
      

  11.   

    有一种方式叫“服务端推” 以前是基于C/S模式下使用的方式, 不过基于B/S模式下照样可以。 你可以建立一个servlet,当客户端请求过来后你并不一下子完成这个http请求,而是保持连接, 后台可以使用线程来监控某个数据或者某些数据,一旦发现数据变化,立即把数据推向客户端。 其实这种方式是有现成的例子的,不过大多是用CGI实现的,比如新浪的篮球比赛文字直播。 我用这种技术写过一简单的聊天室,如果想研究研究可以找我。
    可知如此系统开销要多大!!!! 就算 c/s采用建立长连接的方式也要慎重,何况是b/s
      

  12.   

    我测试过1000个常连接没任何效率问题。
    Tomcat5.28 
    P4m 1.7 (笔记本)
    1G内存我想服务器比我笔记本性能强多了吧?
    再想想新浪的文字直播有多少并发用户在线。
      

  13.   

    我晕! 谁会用1000个连接去查数据库啊, 用脚趾头想想就明白了。 用Observer模式解决数据变化后通知各个祯听的客户连接啊,而数据变化可以用一个线程来检测不就OK啦,或者数据入库钱先刷新内存中的那个被监测的数据模型。 要懂得活学活用啊。
      

  14.   

    第一点.http是静态的.不能动态刷新
    --------------
    如果.一定要实现.就要使用 服务端推 或其他的类 聊天室的方法实现
    ---------------------
    或,在浏览器上.放一个控件或applet,同服务器想连.当发现.数据变化时.对页面进行刷新..
      

  15.   

    继续讨论,这个问题一直是我心中的痛,这个问题也弄得我和老板不愉快.最好给一个数据库和applet的例子.无刷新机制动态显示数据库中的数据.
      

  16.   

    super_zzw(之支吾) 说的是正确的!支持
      

  17.   

    观察者模式绝对可以用上的,重复一下:super_zzw(之支吾) 说的是正确的!