servlet 生命周期

  • tomcat启动,加载web.xml或servlet类上的Annotation为每一组servlet的配置都生成一个ServletConfig对象

  • 用户第一次通过url访问web资源(如:http://localhost/servlet04/hello)

  • Servlet容器会检查用户访问的url是不是对应一个Servlet

    服务器会比对服务器上每一个ServletConfig对象所封装的url是不是和你请求的url相同。如果相同,就找到了目标servlet对应的ServletConfig对象
  • 实例化Servlet对象,并调用init方法把对应的ServletConfig对象传给Servlet          

HelloServlet hser=new HelloServlet();
Hser.init(ServletConfig s1);
  • 调用Servlet对象的service方法

        Tomcat接受的标准的http协议请求,并将请求所有信息封装一个对象。

         ServletRequest req  = new ServletRequest ();//封装了对客户端的输入流

         Tomcat将http协议的响应封装一个对象

          SerlvetResponse res; //封装了对客户端的输出流

         Hser.service(ServletRequest req,ServletResponse res);

  • 第二次访问url对应的servlet时,直接调用servlet对象的service方法

servlet是单实例长驻服务器内存的,只有第一次访问才实例对象,并调用init方法

  • 当服务器宕机时,会调用Servlet的destroy方法

    补充:

//第一种书写
@WebServlet(value="/welcome",loadOnStartup=0)
//第二种书写

hello
com.oracle.HelloServlet
2

如果loadOnStartup=1,启动Tomcat就实例化servlet对象并调用init方法,否则的话,第一次访问才实例化servlet对象。

loadOnStartup值越小,越优先实例化

 

你可能感兴趣的:(servlet)