我最近开始学servlet,想问一下各位:假设有100个用户同一时刻发出一100个请求,比如该请求为提交某页面.我的问题是:
 1.servlet容器是创建100个处理该请求的相关servlet类对象还是创建一个servlet类对象来处理该请求?
 2.为什么init()方法只调用一次,而service()调用多次?
哪位高手能否说得详细一点,在次谢谢了!

解决方案 »

  1.   

    1 只有一个servlet对象
    2 根据1题答案可得:init()是在servlet对象生成(new)的时候调用。service()是request访问时调用。
      

  2.   

    对了,不用关心service()方法,由web容器处理,我们使用doGet() ,doPost() 等方法进行处理
      

  3.   

    只生成一次 一般在首次访问的时候生成 生成的时候 调用init()
    请求的时候 就调用 doget(), dopost()
    如果每次请求都生成新的话 服务器的开销太大了 
    想象一下100个线程 调用同一个静态方法
      

  4.   

    那用一个servlet对象来处理这么多请求不会出现混乱吗?我知道可以通过ServletRequest,和servletResponse来区别该处理哪个请求,那也就意味着某个servet对象处理一个请求的时候,就不能处理另外一个请求?直到处理完一个才能处理第二个,是不是?听说servlet可以用多线程,假设没处理完一个请求就处理另外一个,那怎么保存前一个ServletRequest对象?
      

  5.   

    处理完一个再处理下一个那要同步才行吧
    多线程情况下 一个请求就对应有一个ServletRequest吧
      

  6.   

    init()是在servlet首次载入的时候调用,而service()是每次访问的时候就调用一次
      

  7.   

    只生成一个对象 web服务器在处理多个并发请求时候是多线程的正因为面对的是多线程环境
    所以需要你编写的servlet 是线程安全的, 估计没有几个人会在servlet类里面声明变量吧! 因为这样做是危险的!你可以还联想下  : jsp不是有个设置 是否线程安全...  jsp在后台是被编译成servlet运行的 
      

  8.   

    一个servlet实例,多个线程,有线程池。servlet内可以定义validate变量。
      

  9.   

    2.为什么init()方法只调用一次,而service()调用多次? 这个已经暴露了 SERVLET的运行机制