一、什么是Servlet?

Servlet:是用Java编写的服务器端程序,一门用于开发动态web资源的技术。其主要功能在与交互式的浏览和修改数据,生成动态web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet的类。一般对Servlet的理解是后者。
若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
  1、编写一个Java类,实现servlet接口。
  2、把开发好的Java类部署到web服务器中。
按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet

二、Servlet的运行流程

Servlet程序是由WEB服务器调用,WEB服务器收到客户端的Servlet访问请求后:

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

在这里插入图片描述

三、Servlet的生命周期

Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()service()destroy()方法来表示
Servlet的生命周期包含了下面4个阶段:

  1. 加载和实例化:第一次请求时创建,通过服务器反射机制创建Servlet对象
  2. 初始化:调用Servlet对象的init()方法,初始化Servlet的信息,init()方法只会在创建后被调用一次
  3. 请求处理:调用service()或者是doGet()doPost()方法来处理请求
  4. 服务终止:在长时间没有被调用或者是服务器关闭时,会调用destroy()方法来销毁Servlet对象

在整个Servlet的生命周期过程中,创建Servlet实例、调用实例的init()destroy()方法都只执行一次,当初始化完成后,Servlet容器会将该实例保存在内存中,通过调用它的service()方法,为接收到的请求服务


一个好奇的人