servlet生命周期
加载----->创建----->执行----->销毁
①servlet():
- 当Web-Client访问时,创建servlet对象。
②init():
- 在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
③service():
- 它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
- 请求到了的时候,tomcat会执行service() 方法来判断请求的方式(doGet还是doPost)。所以每一次请求过来的时候都会调用一次service() 方法。
④destory():
- 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。
创建servlet对象的时机
-
Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。
-
在Servlet容器启动后:Web-Client首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据Web-Client的请求创建HttpRequest、HttpResponse对象,从而调用Servlet对象的service方法。
这里要注意:当请求第一次抵达时,创建一个servlet对象,当请求第二次抵达时,由于之前已经创建了对象,就不会再创建了。(只会创建一个servlet,然后所有走该路径的请求都会使用这一个servlet对象)
-
Servlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。
<servlet>
<servlet-name>register</servlet-name>
<servlet-class>控制器.注册控制器</servlet-class>
<
<load-on-startup>1</load-on-startup> //启动Tomcat的时候直接创建这个servlet
</servlet>
<servlet-mapping>
<servlet-name>register</servlet-name>
<url-pattern>/register.do</url-pattern>
</servlet-mapping>
这里给大家推荐一下大神的文章,以供参考。大神文章…