Servlet是运行在Servlet容器(有时候也叫Servlet引擎,是web服务器和应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应。常用的tomcat、jboss、weblogic都是Servlet容器)中的,其生命周期是由容器来管理。Servlet生命周期通过java.servlet.Servlet接口中的init()、Service()、和destory()方法表示。Servlet的生命周期有四个阶段:加载并实例化、初始化、请求处理、销毁。
步骤:
1. 当Servlet容器负责加载和实例化Sevlet。当容器启动时,或者容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。当容器启动后,Servlet通过类加载器来加载Servlet类,加载完成后再new一个Servlet对象来完成实例化操作。
2. 实例化操作完成后,会调用Init()方法,并传递实现ServletConfig接口的对象。在init()方法中,Servlet可以部署描述符中读取配置参数,或者执行任何其他一次性活动。在Servlet的整个生命周期类,init()方法只被调用一次。
3. 当Servlet初始化后,容器就可以准备处理客户机请求了。当容器收到对这一Servlet的请求,就调用Servlet的service()方法,并把请求和响应对象作为参数传递。当并行的请求到来时,多个service()方法能够同时运行在独立的线程中。通过分析ServletRequest或者HttpServletRequest对象,service()方法处理用户的请求,并调用ServletResponse或者HttpServletResponse对象来响应。当servlet完成一次请求和相应后,会等待下一个请求或有服务器将其销毁。
4. 一旦Servlet容器检测到一个Servlet要被卸载,这可能是因为要回收资源或者因为它正在被关闭,容器会在所有Servlet的service()线程之后,调用Servlet的destroy()方法。然后,Servlet就可以进行无用存储单元收集清理。这样Servlet对象就被销毁了。这四个阶段共同决定了Servlet的生命周期。
技术参考:
http://blog.csdn.net/chjttony/article/details/6086292