首先,Servlet是一个java类,主要是用来处理客户端的请求并将处理结果发送到客户端。
其次,Servlet的生命周期由容器来控制,分为初始化、运行、销毁三阶段。
初始化阶段:
1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。
2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。
3,Servlet容器创建一个servlet对象。
4,Servlet容器调用servlet对象的init方法进行初始化。
这里PS下:
当你配置的servlet,在web.xml文件中,如果<load-on-startup></load-on-startup>不配置(默认)或者参数为负数时,这时的初始化,也就是调用init方法是在第一次请求时发生的;相反,如果参数大于等于0,比如设置成1,这时的初始化动作伴随着你容器的启动而发生。
运行阶段:
当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。然后调用service方法。并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理。
销毁阶段:
当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。
在这里该注意的地方:
在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户端访问的次数
当用户发送一个请求到某个Servlet时,Servlet容器会创建一个ServletRequest和ServletResponse对象,在ServletRequest对象中封装了用户的请求信息,然后Servlet容器把ServletRequest和ServletResponse对象传递给用户所请求的Servlet,这个Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传给用户。