Servlet学习系列(三)-----Servlet生命周期

Servlet生命周期

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

ServletConfig s1 //HelloServlet…
ServletConfig s2 //WelcomeServlet…
Step2: 用户通过第一次通过 l url 访问 web 资源
http://localhost/servlet04/hello
Step3:Servlet 容器会检查用户访问的 l url 是不是对应一个 Servlet
服务器会比对服务器上每一个 ServletConfig 对象所封装的 url 是不是和你请求的 url 相同,如果相同就找到了目标 Servlet 对应的 ServletConfig 对象
Step4: 实例化 t Servlet 对象,并调用 t init 方法把对应的 ServletConfig 对象传给 Servlet
HelloServlet hser=new HelloServlet();
Hser.init(ServletConfig s1);
Step5: 调用 Servlet 对象的 service 方法
Tomcat 接收标准的 http 协义请求,并将请求所有信息封装一个对象
ServletRequest req=new Servlet…();//封装了对客户端的输入流
Tomcat 将 http 协议的响应封装一个对象
SerlvetResponse res; //封装了对客户端的输出流
Hser.service(ServletRequest,ServletResponse);
Step6: 第二次访问的 URL 对应 Servlet 时,直接调用 Servlet 对象的 service 方法 step5
Servlet 是单实例长驻服务器内存的,只第一次访问才实例对象,并调用 init 方法
Step7: 当服务器宕机时,会调用 Servlet 的 的 desroy 方法
补充:

@WebServlet(value="/welcome",loadOnStartup=0)
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.oracle.HelloServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>

如果: loadOnStartup 有值,启动 tomcat 就实例化 servlet 对象并调用 init 方法否则话,第一次访问才实例化 Servlet 对象loadOnStartup 值越小,越优先实例化

发布了49 篇原创文章 · 获赞 4 · 访问量 2534

猜你喜欢

转载自blog.csdn.net/weixin_42040292/article/details/103595548
今日推荐