组团学

Servlet生命周期

阅读 (553255)

一、生命周期概述

所谓xxx的生命周期,就是说xxx的出生、服务,以及死亡。Servlet生命周期也是如此!与Servlet的生命周期相关的方法有:

​ void init(ServletConfig);

​ void service(ServletRequest,ServletResponse);

​ void destroy();

二、Servlet的出生

服务器会在Servlet第一次被访问时创建Servlet,或者是在服务器启动时创建Servlet。如果服务器启动时就创建Servlet,那么还需要在web.xml文件中配置。也就是说默认情况下,Servlet是在第一次被访问时由服务器创建的。

而且一个Servlet类型,服务器只创建一个实例对象,例如在我们首次访问http://localhost:8080/helloservlet/helloworld时,服务器通过“/helloworld”找到了绑定的Servlet名称为com.tyschollo.servlet.HelloServlet,然后服务器查看这个类型的Servlet是否已经创建过,如果没有创建过,那么服务器才会通过反射来创建HelloServlet的实例。当我们再次访问http://localhost:8080/helloservlet/helloworld时,服务器就不会再次创建HelloServlet实例了,而是直接使用上次创建的实例。

在Servlet被创建后,服务器会马上调用Servlet的void init(ServletConfig)方法。请记住, Servlet出生后马上就会调用init()方法,而且一个Servlet的一生。这个方法只会被调用一次。这好比小孩子出生后马上就要去剪脐带一样,而且剪脐带一生只有一次。

我们可以把一些对Servlet的初始化工作放到init方法中!

三、Servlet服务

当服务器每次接收到请求时,都会去调用Servlet的service()方法来处理请求。服务器接收到一次请求,就会调用service() 方法一次,所以service()方法是会被调用多次的。正因为如此,所以我们才需要把处理请求的代码写到service()方法中!

四、Servlet的离去

Servlet是不会轻易离去的,通常都是在服务器关闭时Servlet才会离去!在服务器被关闭时,服务器会去销毁Servlet,在销毁Servlet之前服务器会先去调用Servlet的destroy()方法,我们可以把Servlet的临终遗言放到destroy()方法中,例如对某些资源的释放等代码放到destroy()方法中。

五、测试生命周期方法

修改HelloServlet如下,然后再去访问http://localhost:8080/helloservlet/helloworld

package com.tyschool.servlet.demo; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class HelloServlet implements Servlet { public void init(ServletConfig config) throws ServletException { System.out.println("Servlet被创建了!"); } public ServletConfig getServletConfig() {return null;} public void destroy() { System.out.println("Servlet要离去了!"); } public String getServletInfo() {return null;} public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("hello servlet!"); } }

说明:在首次访问HelloServlet时,init方法会被执行,而且也会执行service方法。再次访问时,只会执行service方法,不再执行init方法。在关闭Tomcat时会调用destroy方法。

测试步骤

​需求:使用Eclipse来创建一个helloservlet项目

A、在Eclipse中创建helloservlet Web项目

image20200208103758386.png

image20200208103931235.png

image20200208104141248.png

B、在项目中创建包

image20200208104355509.png

image20200208104444237.png

C、在包中创建Servlet

image20200208105136831.png

image20200208104544347.png

image20200208104901638.png

image20200208104619773.png

image20200208104710374.png

d、手动导入tomcat运行环境

image20200208104927012.png

image20200208104955102.png

image20200208105044241.png

image20200208105230748.png

e、把项目部署到server中

image20200208105649371.png
image20200208105728024.png

image20200208105808695.png

image20200208105826551.png

image20200208105920769.png

image20200208110052036.png

f、浏览器测试

image20200208110221542.png

image20200208110336991.png

补充:用实现Servlet接口的方式创建Servlet

image20200208111533939.png

image20200208111604560.png

image20200208111632133.png

image20200208111710086.png

需要 登录 才可以提问哦