servlet是单例类,你可以在服务启动时让服务启动它无需人工干预  <servlet>
    <servlet-name>uploadxml</servlet-name>
    <servlet-class>net.htjs.nssb.UploadXml</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>

解决方案 »

  1.   

    把线程的是否启动作为一个标识,放到application中,例如:
        ServletContext apl = getServletConfig().getServletContext();
        
        apl.setAttribute("自己定义的标识流程是否启动的变量", "true");
    然后在每次可以先把这个东西get出来,查看是否为true如果是true就说明启动过,否则为没有启动过.
    在jsp页面中做开始与停止的按钮,然后让开始和停止都访问servlet,根据情况,判断开始和停止,最后在转向回jsp页面..
      

  2.   

    我是在servlet中写的线程类。我意思是比如我这样写
            if(submit == "Start"){
                threadclass AA = new threadclass();
                threadclass.run();
            }else if(submit == "Stop"){
                AA.stop();
            }就是else里面AA不能这样访问,要怎样才能访问到AA?
      

  3.   

    threadclass AA = new threadclass();        
            if(submit == "Start"){
                AA.run();
            }else if(submit == "Stop"){
                AA.stop();
            }
      

  4.   

    那这样就是每次访问servlet就会兴建一个线程而没有运行。那如果我第一次访问了servlet并运行了那个线程,在我第二次访问servlet时它自动兴建线程,那这时AA指的是我前一次创建的还是这次创建的?可能是这次的吧?前一次的怎么控制?
      

  5.   

    那这样就是每次访问servlet就会兴建一个线程而没有运行。那如果我第一次访问了servlet并运行了那个线程,在我第二次访问servlet时它自动兴建线程,那这时AA指的是我前一次创建的还是这次创建的?可能是这次的吧?前一次的怎么控制?
    对于这个问题,我在第一次回答你的时候就告诉你了,可以做一个属性,放到application里面,通过它进行判断.你仔细看看前面的回复吧.
      

  6.   

    放到session里面不行,线程在服务端运行,session保存在客户端,它不能作为全局的属性....一次会话消失后,它就消失了.