servlet生命周期_动力节点Java学院整理

 更新时间:2017年07月21日 10:16:58   作者:xuekyo  
这篇文章主要为大家详细介绍了servlet生命周期的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文为大家分享了servlet生命周期的相关资料,供大家参考,具体内容如下

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

Tomcat 与 Servlet 是如何工作的:

步骤:

1.Web Client 向Servlet容器(Tomcat)发出Http请求
2.Servlet容器接收Web Client的请求
3.Servlet容器创建一个Request对象,将Web Client请求的信息封装到这个对象中。
4.Servlet容器创建一个Response对象
5.Servlet容器调用HttpServlet对象的service方法,把Request对象与Response对象作为参数传给Servlet 对象。
6.Servlet调用Request对象的有关方法,获取Http请求信息。
7.HttpServlet调用Response对象的有关方法,生成响应数据。
8.Servlet容器把HttpServlet的响应结果传给Web Client。 

Servlet工作原理:

1、首先简单解释一下Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet()、doPost()等等这些方法的,HttpServlet中定义了这些方法,但是都是返回error信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。
2、每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。
3、Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest、ServletResponse 强转为HttpRequest 和 HttpResponse。

创建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设置的<load-on-startup>属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。

<servlet>
  <servlet-name>Init</servlet-name>
  <servlet-class>org.xl.servlet.InitServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • FeignMultipartSupportConfig上传图片配置方式

    FeignMultipartSupportConfig上传图片配置方式

    这篇文章主要介绍了FeignMultipartSupportConfig上传图片配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringBoot中@ControllerAdvice注解的使用方法

    SpringBoot中@ControllerAdvice注解的使用方法

    这篇文章主要介绍了SpringBoot中@ControllerAdvice注解的使用方法,这是一个增强的 Controller,对controller层做异常处理、数据预处理、全局数据绑定, springboot 会自动扫描到,不需要调用,这个注解是spring MVC提供的,在springboot中也可以使用,需要的朋友可以参考下
    2024-01-01
  • Java如何通过反射获取Constructor、Field、Method对象

    Java如何通过反射获取Constructor、Field、Method对象

    反射指的是对象的反向处理操作,根据对象取得对象的来源信息,在反射的世界里面,看重的不再是一个对象,而是对象身后的组成,下面这篇文章主要给大家介绍了关于Java如何通过反射获取Constructor、Field、Method对象的相关资料,需要的朋友可以参考下
    2022-06-06
  • java使用Socket类接收和发送数据

    java使用Socket类接收和发送数据

    Socket类是负责处理客户端通信的Java类。本文主要是介绍java使用Socket类接收和发送数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-10-10
  • Redis分布式锁实现方式及超时问题解决

    Redis分布式锁实现方式及超时问题解决

    这篇文章主要介绍了Redis分布式锁实现方式及超时问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Windows下Java环境变量配置详解

    Windows下Java环境变量配置详解

    这篇文中给大家介绍的是关于Windows下JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置的相关资料,文中介绍的还是相对比较详细的,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Springboot支持Emoji表情的实现方法

    Springboot支持Emoji表情的实现方法

    本文主要介绍了Springboot 支持Emoji 表情,本篇的实现方式是仅需后端处理,具有一定的参考价值,需要的朋友可以参考一下。
    2021-07-07
  • 使用Java方法配置Spring代码解析

    使用Java方法配置Spring代码解析

    这篇文章主要介绍了使用Java方法配置Spring代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java Method类及invoke方法原理解析

    Java Method类及invoke方法原理解析

    这篇文章主要介绍了Java Method类及invoke方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 关于Java创建线程的2种方式以及对比

    关于Java创建线程的2种方式以及对比

    这篇文章主要给大家介绍了关于Java创建线程的2种方式以及对比的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01

最新评论