首页 > 其他分享 >Servlet的生命周期

Servlet的生命周期

时间:2023-10-01 23:56:47浏览次数:28  
标签:容器 生命周期 请求 初始化 实例 Servlet

一、什么是Servlet?

  • Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
  • 狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议Web服务器。

二、Servlet的实现过程

  • 由客户端向服务器发送一个请求
  • 再由服务器将请求信息发送到Servlet
  • Servlet生成响应的内容发送给服务器
  • 最后由服务器将响应内容发送给客户端

三、Servlet的生命周期

  在通过一个URL路径发起对一个Servlet请求的过程中,其本质是在调用执行Servlet实例的doXXX()方法。该Servlet实例创建和使用的过程,被称为Servlet的生命周期。

       整个生命周期包括:实例化、初始化、服务、销毁。

3.1加载和实例化

        Servlet 容器负责加载和实例化 Servlet。当容器启动或首次请求某个 Servlet 时,容器会读取 web.xml 或 @WebServlet 中的配置信息,对指定的 Servlet 进行加载。加载成功后,容器会通过反射对 Servlet 进行实例化,而反射的本质是通过调用它的构造方法(无参)。

3.2初始化

        在Servlet实例化之后,容器会通过重写HttpServlet父类的init()方法或者通过实例自动调用init()方法去初始化这个对象。而初始化的目的是为了让Servlet实例在处理请求之前完成一些初始化的工作,例如:建立数据库的连接、获取配置信息等。

        在整个Servlet的生命周期内,init()方法只能被调用一次。初始化期间,Servlet 实例可以通过 ServletConfig 对象获取在 web.xml 或者 @WebServlet 中配置的初始化参数。

3.3服务

        Servlet容器接收到来自客户端请求时,容器会针对该请求分别创建一个 ServletRequst 对象和 ServletResponse 对象,将它们以参数的形式传入 service() 方法内,并调用该方法对请求进行处理。在执行 service() 方法前,init() 方法必须已成功执行。

        在 service() 方法中,Servlet 通过 ServletRequst 对象获取客户端的相关信息和请求信息。在请求处理完成后,通过 ServletResponse 对象将响应信息进行包装,返回给客户端。当 Servlet 容器将响应信息返回给客户端后,ServletRequst 对象与 ServletResponse 对象就会被销毁。        

        在 Servlet 的整个生命周期内,对于 Servlet 的每一次请求,Servlet 容器都会调用一次 service() 方法,并创建新的 ServletRequest 和 ServletResponse 对象。即 service() 方法在 Servlet 的整个生命周期中会被调用多次。

3.4销毁

        当 Servlet 容器关闭、重启时,就表示Servlet的生命周期结束,容器就会调用 destory() 方法,释放该实例使用的资源,随后该实例就会被 Java 的垃圾收集器所回收。

四、生命周期图解

 

标签:容器,生命周期,请求,初始化,实例,Servlet
From: https://www.cnblogs.com/visioning/p/17739613.html

相关文章

  • 软件工程的生命周期和模型种类
    同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生命周期。根据GB8566-88(《软件工程国家标准——计算机软件开发规范》),可以将软件生命周期概括为6个阶段:可行性研究、需求分析、设计、实现、测试和维护。1、可行性研究阶段此阶段......
  • Servlet技术
    Servlet基础第1关:实现第一个servlet程序任务描述本关任务:实现第一个Servlet程序。相关知识由于大多数Web应用都是通过HTTP协议和客户端进行交互,且在实际开发servlet中多是编写基于HTTP协议请求的servlet,在Servlet接口中,专门提供了一个抽象类javax.servlet.http.HttpServ......
  • servlet基础
    第1关:实现第一个servlet程序任务描述本关任务:实现第一个Servlet程序。相关知识由于大多数Web应用都是通过HTTP协议和客户端进行交互,且在实际开发servlet中多是编写基于HTTP协议请求的servlet,在Servlet接口中,专门提供了一个抽象类javax.servlet.http.HttpServlet,它是Gener......
  • Vue源码学习(八):生命周期调用
    好家伙, Vue源码学习(七):合并生命周期(混入Vue.Mixin)书接上回,在上一篇中,我们已经实现了合并生命周期现在,我们要在我们的初始化过程中,注册生命周期 1.项目目录 红框为本篇涉及到的.js文件 2.先来看/utils/index.jsexportconstHOOKS=["beforeCreated......
  • 21-生命周期
    生命周期生命周期又名生命周期回调函数、生命周期函数、生命周期钩子什么是生命周期Vue在关键时刻帮我们调用的一些特殊名称的函数。生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的。生命周期函数中的this指向是vm或组件实例对象。 通过一个小案......
  • uniapp自动引入Vue3(ref,reactive...)的API、uniapp生命周期和封装hooks
    未自动导入Vue3(ref,reactive...)的API和uniapp生命周期,需要在每个页面把API和uniapp生命周期的代码都重复写一遍<scriptsetup>import{ref,reactive}from"vue"import{onLaunch,onShow,onHide}from'@dcloudio/uni-app'//封装的hooksimport{useLi......
  • SpringBoot | Bean生命周期
    欢迎参观我的博客,一个Vue与SpringBoot结合的产物:https://poetize.cn博客:https://gitee.com/littledokey/poetize-vue2.git聊天室:https://gitee.com/littledokey/poetize-im-vue3.git后端:https://gitee.com/littledokey/poetize.git七牛云登录/注册地址(文件服务器,CDN):https:/......
  • 使用HttpServletResponse实现curl接口时控制台输出(续)
    上一篇文章的问题在上一篇文章SpringBootRestController接口如何输出到终端中讨论了如何使用HttpSerlvetResponse写入输出流,使应急接口通过curl调用时可以在控制台输出信息,使运维人员知道命令执行情况。但是上一篇文章的问题是,HttpServletResponse是Controller的参数......
  • springMVC调用流程和springmvc工作机制和请求生命周期
    servlet工作模式客户端发送请求至客户端服务器启动并调用servletservlet根据请求生成响应内容并传回给服务器服务器返回给客户端servlet生命周期由容器控制,第一次请求时被加载,存活直到应用服务器关闭SpringMVC工作机制DispatcherServlet接受到request解析后到uri获取到h......
  • Linux-----进程、线程、协程的生命周期、调度器slab
    Linux进程、线程、协程的区别进程进程是操作系统中的一个独立执行单元。每个进程都有自己的独立内存空间,包括代码段、数据段、堆栈等。进程之间通常需要通过进程间通信(IPC)来交换数据和信息。进程启动和销毁开销较大,因为需要分配和释放独立的内存空间。进程之间隔离度高,一个......