我要实现这样的效果:
系统内假设有1000个“缓存”,所以,我要定期删除这些缓存
这些缓存是以“关键字”命名存在在内存中的,比如 001,002,003,1000我现在在jsp页面上执行“删除缓存”按钮,我使用ajax实现的,先把这些关键字组合成一个list集合发送给后台,系统后台,就按照这些关键字,一条一条的删除缓存
但是,我要求在jsp页面上实时反映这些缓存删除情况,每删除一条缓存,都必须在jsp页面上给打印出来,显示是这样的:“001缓存正在删除”
“001缓存删除成功!!!”
当后台1000条缓存删除了,前台的jsp页面上必须实时打印出这些删除信息
我现在没想出什么好办法,特此请求帮助,
听说用多线程可以做到,也希望提些建议,谢谢

解决方案 »

  1.   

    比如你要删除10个缓存,001-010,你可以在删除001的回调函数里再调用ajax删除002。在删除002的回调函数里调用ajax删除003……
    每个回调函数里,用JS往页面上写消息。
      

  2.   

    其实,你也可以给ajax加上同步参数做这个处理。这样的话,需要在js里写循环遍历你的list。
    不过同步处理我没用过,我不知道是否真能达到这样的效果。
    无论怎样,在回调函数里再删下一个,肯定是可以实现你说的这个效果的。
      

  3.   

    其实,我想的多线程是这样的,启动多线程,把每次删除缓存的信息
    “001缓存正在删除” 
    “001缓存删除成功!!!”
    存放在List中,然后把list写到session中
    我在页面上做个定时处理来达到这样的效果
    我现在有个问题,javascript怎么取到session中的list集合哦?
      

  4.   

    用session的话,那就错远了。
    但是你要是只是想看到这么个效果,而不是真正的实时的反应服务器上的当前动作。那做个假的也无所谓。无论服务器在不在干活,你都往页面上一行一行的写:
    001缓存正在删除
    001缓存删除成功!!!哈哈,要做的像一点哦。
      

  5.   

    我已经实现了,我换了思路,也没用多线程,也没用ajax的回调办法
    我是直接调用
     writerString(response, message);来实现的private static void writerString(HttpServletResponse response,
                String content) {
            PrintWriter writer = null;
            try {
                if (response != null) {
                    writer = response.getWriter();
                    writer.print(content + "<br/>");
                    writer.flush();
                }
            } catch (IOException e) {
                log.error(e, e);
            } finally {        }
        }
      

  6.   


    哦,这样独立使用tomcat貌似是没有问题的。
    但愿你部署的时候别出错。
      

  7.   

    部署环境是weblogic的,应该不会有问题吧,以前的同事也做过了