Servlet教程(三) Servlet的生命周期
Servlet 生命周期:Servlet 加载–>实例化–>服务–>销毁
- Servlet加载,实例化 — init()
由WEB服务器加载Servlet类,创建实例,并且调用Servlet的init方法。
在Servlet的生命周期中,仅执行一次init()方法。无论有多少客户机访问Servlet,都不会重复执行init()。 - Servlet进行服务 — service()
service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。
在HttpServlet类中,将service()方法细化成了doGet(),doPost()等方法,区别不同类型的请求。 - Servlet销毁 — destroy()
仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。
创建Servlet对象的时机
- 一般来说,在WEB服务器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet对象的service方法。
- 特别的,我们也可以指定WEB服务器在启动时就自动创建Servlet。只要在web.xml文件中将Servlet的属性设为大于等于0的值。
load-on-starup的值越小,自动创建的优先级越高。
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.etc.servlet.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>