Javaweb学习之servlet生命周期

学习目的

  1. 了解Servlet在Http服务器之中的流程职责
  2. 掌握Servlet的生命周期(重点)
  3. 掌握Http服务器请求对象和响应对象的生命周期

一、Servlet对象生命周期

  1. Servlet对象创建
    在一个网站中,所有Servlet接口实现类的实例对象,只能由Http服务器负责额创建,开发人员不能手动创建Servlet接口实现类的实例对象。(开发人员只负责Servlet接口的实现与方法重写)

  2. Servlet对象创建时机
    在默认的情况下,Http服务器接收到 对于当前Servlet接口实现类 的第一次请求时,就自动创建这个Servlet接口实现类的实例对象。(只创建一次?还是每次访问该Servlet对象都创建?无论浏览器有多少个用户或者提交多少次请求,对于同一个动态资源文件,只创建一个Servlet对象。

  3. 手动建议Http服务器创建Servlet实例对象
    默认情况下,浏览器向服务器发送请求后,Http服务器会自动创建Servlet对象。但也可以通过手动配置,要求Http服务器在启动时自动创建某个Servlet接口实现类的实例对象。(可通过以下代码,将项目发布到服务器进行测试,在控制台查看Servlet的输出信息)

<servlet>
    <servlet-name>GG</servlet-name> 
    <servlet-class>com.yry.controller.GGServlet</servlet-class>
    <!-- 以上GGServlet对象不会在Http服务器启动时"自动"创建,而是用户访问时才创建-->

    <!-- 以下mmServlet对象会在Http服务器启动时"立即"创建-->
    <servlet-name>mm</servlet-name> 
    <servlet-class>com.yry.controller.mmServlet</servlet-class>
        <!--任意大于0的整数即可,表示Http服务器启动 就立即创建Servlet对象-->
        <load-on-startup> 30 </load-on-startup>
</servlet>
  1. Servlet创建次数
    在Http服务器运行期间,一个Servlet接口实现类只能被创建出一个实例对象(不重复创建);在Http服务器关闭时刻,自动将网站中所有的Servlet对象进行销毁。

  2. Servlet对象销毁
    无论浏览器提交多少次请求,Http服务器创建了多少个Servlet对象,在Http服务器关闭时,所有的Servlet对象都将会销毁。

  3. Servlet生命流程
    浏览器输入URL中Servlet简名 --> Http服务器接收请求 --> Http服务器创建Servlet实例对象 --> 调用Servlet父类HttpServlet的Service()方法 --> 执行Servlet的doGet()或doPost()方法 --> Http服务器关闭 --> Servlet实例对象销毁。

1.1 IDEA快速创建Servlet

  1. 描述
    在IDEA开发工具中,提供了快速创建Sevrlet的快捷键。

  2. IDEA创建Servlet步骤
    在已创建的web项目下 --> 在src目录中右键 --> new --> 最下方选择Sevlet(或creat Servlet) --> 输入Servlet名称 --> 填写Servlet存放的包名和路径 --> 取消左下角的勾选 --> 完成Servlet创建


    IDEA创建Servlet.png
  3. 管理Servlet对象
    在IDEA中快速创建Servlet对象后,IDEA会自动生成一个Servlet接口实现类,并且会自动弹出web.xml文件,用于及时编写Servlet信息交给服务器进行管理


    管理Servlet对象.png

二、Http协议包对象

  1. 分类
  • Http请求协议包对象
  • Http响应协议包对象
  1. 特点
  • 请求对象 和 响应对象的生命周期贯穿于一次服务器对浏览器请求的处理过程中,从服务器接收到请求开始,到服务器将响应包返回时结束;
  • 请求对象 和 响应对象相当于用户在服务端的代言人。

2.1 请求对象生命周期

  1. 请求对象创建
    在Http服务器接收到浏览器发送的Http请求协议包之后,Http服务器自动为当前的Http请求协议包生成 一个请求对象 和 一个响应对象。

  2. 请求对象的作用
    在Http服务器调用 Servlet实现类重写的doGet() 或 doPost()方法时,负责将 请求对象 和 响应对象作为实参传递到doGet() 或 doPost()方法中,确保doGet() 或 doPost()的正确执行。

  3. 请求对象销毁
    在Http服务器准备推送Http响应协议包之前(将doGet() / doPost()的执行结果返回),Http服务器会负责将本次浏览器请求关联的 请求对象 和 响应对象销毁。

2.2 响应对象生命周期

  1. 响应对象创建
    在Http服务器接收到浏览器发送的Http请求协议包之后,Http服务器自动为当前的Http请求协议包生成 一个请求对象 和 一个响应对象。

  2. 响应对象的作用
    在Http服务器调用 Servlet实现类重写的doGet() 或 doPost()方法时,负责将 请求对象 和 响应对象作为实参传递到doGet() 或 doPost()方法中,确保doGet() 或 doPost()的正确执行。

  3. 响应对象销毁
    在Http服务器准备推送Http响应协议包之前(将doGet() / doPost()的执行结果返回),Http服务器会负责将本次浏览器请求关联的 响应对象销毁。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容