如下代码所示,severlet中加入定时功能,想把response和request参数传递到doWhat方法中执行业务逻辑,这样貌似可行,实际上response和request不能传递到run()函数中,现高分请教。
public   class   MyServlet   extends   Servlet   {   
          doPost(HttpServletRequest   request,   HttpServletResponse   response)   {   
                  ……   
                  Timer   timer   =   new   Timer();   
                  timer.schedule(new   Task(request,response),   date);   
                  ……   
          }   
  }   
    
  class   Task   extends   TimerTask   
  {   
          private   HttpServletRequest request;   
  private   HttpServletResponse response;
          public   Task(HttpServletRequest request,HttpServletResponse   response){   
           this.request   = request;
           this.response = response;
    }   
          public   void   run()   {   
                  try     {   
                          doWhat(request,response);   
                  }   catch   (IOException   e)   {   
                          System.err.println(e);   
                  }   
          }   
          ……   
  }

解决方案 »

  1.   

    呵呵!你还真会想...先把servlet的流程搞清楚了再说吧!
      

  2.   

    不可以,结贴吧.同意楼上,建议阅读servlet基本知识,
    另外如果你需要request里面的值可以先把它放到缓存中,定时启动时从缓存中取值就可以了
      

  3.   

    servlet也是一个java类啊!定时启动该有很多解决办法吧!
    假设你想在晚上12点时,传递两个值给服务端name="123"、time="time is up!"。可以在客户端这边启动一个小线程,监听时间,其实逻辑很简单:
    public void run() {
      while(Flag){
        // 获取系统时间
        // if(是否到了晚上12点)
        // {
        //   new一个继承了HttpServlet的Java类,该类在doPost方法中,跳转到你想要的  
        //   页面(forward或redirect),将你想传递的参数传过去。
        //   new完对象,直接调用doPost方法吧!
        //   事情完成了,要么return,要么将Flag设为false,关闭这个线程吧!
        // }    // 没进if,就休息一下,Thread.sleep(***);
      }
    }没有经过调试,仅仅是一个想法。楼主应该有更多想法吧!
      

  4.   

    如果这种方式不行,问题可能也是出在到了时间后,怎么向服务端发送http请求了。你可以google一下,js应该可以实现。
      

  5.   

    You may want to try Quartz framework.
      

  6.   

    可以的,了解了Servlet的原理以后,楼主的想法是可以实现的。
    呵呵。
    但是要启动一下Servlet,然后该线程要wait。启动一个Timer。向该Thread notify消息即可。
      

  7.   

    severlet中加入定时功能使用QUARTZ 组件可以实现
      

  8.   

    可以实现,但是定时不应该是在dopost中
    public   class   MyServlet   extends   Servlet   {    
              doPost(HttpServletRequest   request,   HttpServletResponse   response)   {    
                      ……    
                      Timer   timer   =   new   Timer();    
                      timer.schedule(new   Task(request,response),   date);    
                      ……    
              }    
      }
    在这里不要定时,在这里只要把request,response传出来,
    其他的都好实现!