servlet生命周期

Servlet生命周期

public class ServletTest extends HttpServlet {


    public ServletTest() {
        super();
    }


    public void destroy() {
        System.out.println("servlet销毁");
    }


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println("=====doGet方法====");
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println("=====doPost方法====");
    }


    public void init() throws ServletException {
        System.out.println("servlet初始化");
    }

}

web.xml文件 设置servlet


  <servlet>
    <!-- servlet的名字  -->
    <servlet-name>ServletTest</servlet-name>
    <!-- servlet加载的类 -->
    <servlet-class>com.zx.servletTest.ServletTest</servlet-class>
  </servlet>

  <servlet-mapping>
    <!-- 指定servlet设置路径 -->
    <servlet-name>ServletTest</servlet-name>
    <!-- servlet的请求路径 -->
    <url-pattern>/servlet/ServletTest</url-pattern>
  </servlet-mapping>
  1. init(): servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。

  1. service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
  2. destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。

Tomcat 与 Servlet 是如何工作的:

步骤:
1. Web Client 向Servlet容器(Tomcat)发出Http请求
2. Servlet容器接收Web Client的请求
3. Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
4. Servlet容器创建一个HttpResponse对象
5. Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
6. HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。
7. HttpServlet调用HttpResponse对象的有关方法,生成响应数据。
8. Servlet容器把HttpServlet的响应结果传给Web Client。

Servlet的运行过程
*Servelt程序是由Web服务器调用的,web服务器收到客户端的Servelt请求后:
1.Web服务器首先检查是否已经装载并创建了该Servelt的实例对象,如果是直接执行4,否则执行2。
2.装载并创建Servlet的一个实例对象
3.调用Servelt实例对象的init方法
4.调用一个用于封装的HTTP请求消息的HttpServletRequest对象和一个代表Http消息的HttpServeltResponse对象,然后调用Servelt的service()方法并将请求和响应对象作为参数传递进去。
5.Web应用程序被停止或者重新启动之前,Servelt引擎将卸载Servelt,并在卸载后调用destroy()方法。

创建Servlet对象的时机:
1. Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。
2. 在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet 对象的service方法。
3. Servlet Servlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在

 <load-on-startup>1</load-on-startup>数值越小创建实例的优先级越高,(启动顺序)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值