Servlet生命周期

一.什么是Servlet

Servlet(Server Applet)是 Java Servlet 的简称,是使用 Java 语言编写的运行在服务器端的程序。具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

工作方式:

当Web服务器得到一个Servlet请求时,并不是直接将请求提交给Servlet,而是转交给部署该Servlet容器(Tomcat),由容器向Servlet提供HTTP请求和响应,并由容器调用Servlet的方法,如doGet()和doPost()。

二.Servlet生命周期

Java中任何对象都有生命周期,Servlet同样也有它的生命周期,如图

 

 Servlet生命周期的三个阶段:

1.初始化阶段

1.Servlet在默认情况下,是在第一次处理请求时,由容器进行实力化,也就是说在得到请求的时候,容器首先会解析请求,查看内存里是否包含了欲访问的Servlet对象,如果有则直接使用,没有则创建Servlet实例对象,然后通过调用init()方法实现Servlet的初始化。

 2.在指定了load-on-startup(使用注解或xml指定),启动优先级的时候,这是一个int类型的数据

  大小决定了Servlet实例化的顺序,小的值先实例化,

  当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;

  当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载

2.运行阶段

Servlet是一个单实例多线程的,在一个生命周期内Servlet只存在一个实例,但是当有不同的请求时,分发不同的线程来调用service()方法

 这是 Servlet 生命周期中最重要的阶段,在这个阶段中,Servlet 容器会为这个请求创建代表 HTTP 请求的 ServletRequest 对象和代表 HTTP 响应的 ServletResponse 对象,然后将它们作为参数传递给 Servlet 的 service() 方法。


service() 方法从 ServletRequest 对象中获得客户请求信息并处理该请求,通过 ServletResponse 对象生成响应结果。


在 Servlet 的整个生命周期内,对于 Servlet 的每一次访问请求,Servlet 容器都会调用一次 Servlet 的 service() 方法,并且创建新的 ServletRequest 和 ServletResponse 对象,也就是说,service() 方法在 Servlet 的整个生命周期中会被调用多次(多线程体现)

3.销毁阶段

 当服务器关闭或 Web 应用被移除出容器时,Servlet 随着 Web 应用的关闭而销毁。在销毁 Servlet 之前,Servlet 容器会调用 Servlet 的 destroy() 方法,以便让 Servlet 对象释放它所占用的资源。在 Servlet 的整个生命周期中,destroy() 方法也只能被调用一次。

需要注意的是,Servlet 对象一旦创建就会驻留在内存中等待客户端的访问,直到服务器关闭或 Web 应用被移除出容器时,Servlet 对象才会销毁(单实例体现)

posted @ 2020-07-01 20:47  木子李和三点水  阅读(572)  评论(0编辑  收藏  举报