请问一下,听说服务器启动时会初始化Servlet,在关闭服务器时Servlet,那么我想问一下,一个应用程序有那么多Servlet,是不是每个Servlet都只有一个实例呢?

解决方案 »

  1.   

    每个SERVLET在服务器关闭前各自最多只有一个实例存在
      

  2.   

    一个实例如何代表众多的Servlet类呢?困惑
      

  3.   

    是一个servlet类,当客户端第一次要求访问这个类时,生产这个类的实例,且只有一个,
    且整个生命周期仅初始化一次。
    访问过程是多线程,通过service()调用doGet or doPost 等
    当这个web application 被关掉或重新载入,destroy(),生命周期结束
      

  4.   

    我想问的是,一个应用程序肯定拥有多个Servlet类来控制各种各样的操作,假如只有一个Servlet实例,当多个用户请求不同操作的时候那怎么办?谢谢
      

  5.   

    那是必然会存在线程并发的问题,就要编写线程安全的SERVLET
      

  6.   

    我知道有多线程哦,我问的不是这个问题
    例如我的web程序中有
    AServlet extends HttpServlet{}
    BServlet extends HttpServlet{}
    这两个进行的是不同的处理
    那么他们肯定都有可能被实例化啊?
    为什么到处都说只有一个Servlet实例呢?谢谢
      

  7.   

    AServlet extends HttpServlet{} 
    BServlet extends HttpServlet{} 这两个是不同的servlet,当然是两个。他们的意思是对于不同用户的相同请求,是同一个servlet处理的
      

  8.   

    楼上的答案是正确的,每个servletClass都有可能拥有至多一个实例。
    AServlet extends HttpServlet{} 
    BServlet extends HttpServlet{} 
    两个不同的servletClass将有如下几种可能
    S = "servlet容器中的实例" = {(null,null),(1个AServlet实例,null),(1个BServlet实例,null),(1个AServlet实例,1个BServlet实例)}
      

  9.   

    个人认为,服务器初始化的这个servlet不是简单的一个类,而是一个类似于容器的东西,也就是所谓的上下文环境,一切的调用都在这个容器里面进行,而jsp所编译成的servlet才是一个个的类,这些类在容器里面是由多线程进行调用的。
      

  10.   

    其实还有外部共享资源间存在的多线程问题;以及所有servlet实例共享的静态变量问题等