首页 » Java » servlet生命周期

servlet生命周期

原文 http://blog.csdn.net/zx6571269/article/details/78868089

2017-12-22 02:00:43阅读(562)

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>
init(): servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。

servlet生命周期

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

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>数值越小创建实例的优先级越高,(启动顺序)

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹