zoukankan      html  css  js  c++  java
  • servlet生命周期、工作原理

    Servlet 生命周期:Servlet 加载--->实例化并初始化--->服务--->销毁。

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

    servlet的工作原理

    1. browser向servlet容器(tomcat)发送一个请求,容器将请求封装进httpRequest对象,同时new 一个httpResponse对象,将这两个对象传递给servlet的service(request,response)方法,service方法进行业务处理,并将结果set进response对象,容器解封httpRequest对象、httpResponse对象,对jsp进行渲染,将结果返回给browser;
    2. 自定义servlet,必须实现servlet接口,servlet接口定义了5个方法分别是getServletConfig()、getServletInfo()、init(ServletConfig arg0)、service(ServletRequest arg0, ServletResponse arg1)、destroy()方法。容器加载servlet时会调用init()方法,容器卸载时会调用destroy()方法,当用户发出请求时会调用service()方法。httpServlet实现了servlet接口,只暴露出dopost(),doget()方法,一般我们只要继承httpservlet就可以了。
    3. servlet和GenericServlet是不特定任何协议的,而httpServlet是特定http协议的类,所以httpServlet实现了service方法,并将servletRequest和servletResponse强转成httpRequest和httpReponse;

    servlet创建时机:

    1. servlet容器启动时读取web.xml配置文件的信息,根据配置<load-on-startup>1</load-on-startup>来决定何时加载servlet.
    2. 如果该值是一个负数或元素不存在,容器是空闲的时候加载。
    3. 如果该值是一个正整数或0,容器必须加载和初始化servlet。
  • 相关阅读:
    杭电 Problem
    杭电Problem 5053 the sum of cube 【数学公式】
    杭电 Problem 2089 不要62 【打表】
    杭电 Problem 4548 美素数【打表】
    杭电 Problem 2008 分拆素数和 【打表】
    杭电 Problem 1722 Cake 【gcd】
    杭电 Problem 2187 悼念512汶川大地震遇难同胞——老人是真饿了【贪心】
    杭电Problem 1872 稳定排序
    杭电 Problem 1753 大明A+B
    东北林业大 564 汉诺塔
  • 原文地址:https://www.cnblogs.com/Junqiang/p/5466537.html
Copyright © 2011-2022 走看看