[align=center][size=x-large]servlet生命周期(转)[/size][/align]
[size=medium]servlet 的生命周期是由servlet 的容器来控制的。分为3个阶段:[color=red]初始化阶段、运行阶段、销毁阶段[/color]。
[color=green]一、初始化阶段:[/color]
1.servlet容器加载servlet类,把它的.class文件中的数据读到内存中。
2.servlet容器创建servletConfig对象。servletConfig对象包含了servlet的初始化配置信 息。 此外servlet容器还会使得servletConfig对象与当前的web应用的servletContext对象关联。
3.servlet容器创建servlet对象。
4.servlet容器调用servlet对象的init(servletConfig config)方法。
通过初始化步骤,[color=orange]创建了servletConfig对象和servlet对象,并且servlet对象与servletConfig对象关联,而servletCongfig对象又与当前对象的servletContext对象关联。[/color]当servlet容器完成servlet后,servlet对象只要通过getServletContext()方法就能得到web应用的servletContext对象。
注:servlet初始化的情况:
(1)当web应用处于运行阶段时,特定的servlet被客户端首次请求访问。
(2)在web.xml中为servlet设置了<load-on-startup>元素
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>servlet.servlet<servlet-class/>
[color=orange]<load-on-startup>0</load-on-startup>[/color]
</servlet>
说明:
在servlet配置中,<load-on-startup>5</load-on-startup>的含义是:
标记容器是否在启动的时候就加载这个servlet。
当值为0或大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数或没有指定时,则指示容器在该servlet被选择时加载。
正数的值越小,启动该servlet得优先级越高。
(3)当web应用被重新启动时,web应用中的所有servlet会在特定时间被重新初始化。
[color=green]二、运行阶段:[/color]
在这个阶段servlet可以随时响应客户端请求。当servlet容器接到访问特定的servlet请求时,servlet容器会创建针对与这个请求的servletRequest()和servletResponse()对象,然后调用service()方法,并把这两个对象当做参数传递给service()方法。service()方法通过servletRequest对象获得请求信息,并处理请求,再通过servletResponse对象生成响应结果。
【不管是post还是get方法提交,都会在service中处理,然后,由service来交由相应的doPost或doGet方法处理,如果你重写了service方法,就不会再处理doPost或doGet了,如果重写service方法,可以自己转向doPost()或doGet()方法】
[color=red]注:当servlet容器把servlet生成的响应结果发送给客户后,servlet容器会销毁servletRequest和servletResponse对象。[/color]
[color=green]三、销毁阶段:[/color]
当web应用被终止时,servlet容器会先调用web应用中所有的servlet对象的destroy()方法,然后在销毁servlet对象。此外容器还会销毁与servlet对象关联的servletContext对象。
在destroy()方法的实现中,可以释放servlet所占用的资源。如:关闭文件输入输出流,关闭与数据库的链接等。
[color=red]注:servlet的生命周期中,servlet的初始化和销毁只会发生一次,因此init()和destroy()方法只能被servlet容器调用一次,而service()方法取决于servlet被客户端访问的次数。[/color][/size]
[size=medium]servlet 的生命周期是由servlet 的容器来控制的。分为3个阶段:[color=red]初始化阶段、运行阶段、销毁阶段[/color]。
[color=green]一、初始化阶段:[/color]
1.servlet容器加载servlet类,把它的.class文件中的数据读到内存中。
2.servlet容器创建servletConfig对象。servletConfig对象包含了servlet的初始化配置信 息。 此外servlet容器还会使得servletConfig对象与当前的web应用的servletContext对象关联。
3.servlet容器创建servlet对象。
4.servlet容器调用servlet对象的init(servletConfig config)方法。
通过初始化步骤,[color=orange]创建了servletConfig对象和servlet对象,并且servlet对象与servletConfig对象关联,而servletCongfig对象又与当前对象的servletContext对象关联。[/color]当servlet容器完成servlet后,servlet对象只要通过getServletContext()方法就能得到web应用的servletContext对象。
注:servlet初始化的情况:
(1)当web应用处于运行阶段时,特定的servlet被客户端首次请求访问。
(2)在web.xml中为servlet设置了<load-on-startup>元素
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>servlet.servlet<servlet-class/>
[color=orange]<load-on-startup>0</load-on-startup>[/color]
</servlet>
说明:
在servlet配置中,<load-on-startup>5</load-on-startup>的含义是:
标记容器是否在启动的时候就加载这个servlet。
当值为0或大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数或没有指定时,则指示容器在该servlet被选择时加载。
正数的值越小,启动该servlet得优先级越高。
(3)当web应用被重新启动时,web应用中的所有servlet会在特定时间被重新初始化。
[color=green]二、运行阶段:[/color]
在这个阶段servlet可以随时响应客户端请求。当servlet容器接到访问特定的servlet请求时,servlet容器会创建针对与这个请求的servletRequest()和servletResponse()对象,然后调用service()方法,并把这两个对象当做参数传递给service()方法。service()方法通过servletRequest对象获得请求信息,并处理请求,再通过servletResponse对象生成响应结果。
【不管是post还是get方法提交,都会在service中处理,然后,由service来交由相应的doPost或doGet方法处理,如果你重写了service方法,就不会再处理doPost或doGet了,如果重写service方法,可以自己转向doPost()或doGet()方法】
[color=red]注:当servlet容器把servlet生成的响应结果发送给客户后,servlet容器会销毁servletRequest和servletResponse对象。[/color]
[color=green]三、销毁阶段:[/color]
当web应用被终止时,servlet容器会先调用web应用中所有的servlet对象的destroy()方法,然后在销毁servlet对象。此外容器还会销毁与servlet对象关联的servletContext对象。
在destroy()方法的实现中,可以释放servlet所占用的资源。如:关闭文件输入输出流,关闭与数据库的链接等。
[color=red]注:servlet的生命周期中,servlet的初始化和销毁只会发生一次,因此init()和destroy()方法只能被servlet容器调用一次,而service()方法取决于servlet被客户端访问的次数。[/color][/size]