Servlet相信学习过java的小伙伴都是知道的,servlet是有生命周期的,到期就会自动销毁,那小伙伴们知道servlet生命周期的四个阶段是哪些吗?下面便跟小编来了解了解吧。

一、加载与实例化

第一阶段,我们知道,Servlet容器是负责加载与实例化Servlet的。当一个Servlet容器在启动或检测到容器需要这个Servlet来以此响应第一个请求时,会创建Servlet实例。Servlet容器启动后,它必须要知道所需的Servlet类是在什么位置,所以Servlet容器能够从本地文件系统、远程文件系统或其他的网络服务中通过类加载器来加载Servlet类,当成功加载后,容器就会创建Servlet的实例。

二、servlet初始化

第二阶段,Servlet实例化后,容器会调用init()方法来初始化对象,这是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,像建立数据库的连接和获取配置信息等。对所有Servlet实例来说,init()方法只能被调用一次。在初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象从Web应用程序的配置信息中获取初始化的参数信息。

三、客户端请求处理

第三阶段,到这里就是Servlet容器调用Servlet中service()方法对请求进行处理了。需要注意的是,在service()方法调用之前,init()方法是必须成功执行的。在service()方法中,Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在它对请求进行处理后,会调用ServletResponse对象的方法设置响应信息。在service()方法执行时,如若发生错误,Servlet实例就可以抛出ServletException异常或UnavailableException异常。如果UnavailableException异常指示了该实例永久不可用,那么Servlet容器就会调用实例的destroy()方法。此后对该实例的任何请求,都将收到容器发送的HTTP

404响应。如果UnavailableException异常指示了该实例暂不可用,那么在暂不可用的时间段内,对该实例的任何请求,都会收到容器发送的HTTP

503响应。

四、servlet销毁

最后阶段,当servlet容器检测到Servlet实例该从服务中被移除时,容器会调用实例的destroy()方法,让该实例可以释放它所使用的资源,从而保存数据到持久存储设备中。一旦需要释放内存或关闭容器时,容器就会调用Servlet实例的destroy()方法。在destroy()方法调用之后,容器就会释放这个Servlet实例,随后这个实例就会被Java的垃圾收集器所回收。如果再次需要这个Servlet处理请求,则Servlet容器就会创建一个新的Servlet实例。在Servlet整个生命周期过程中,创建Servlet实例、调用实例的init()和destroy()方法都只能够进行一次,当初始化完成后,Servlet容器就会将该实例保存在内存中,通过调用它的service()方法,为接收到的请求服务。

流程图:

以上便是本文的所有内容了,如果还想了解更多java常见问题可以来关注我们的网站。如需转载请注明出处噢。

推荐阅读:

Java小程序的生命周期包括哪些阶段,servlet生命周期的4个阶段是什么?都有什么作用?...相关推荐

  1. 微信小程序自定义标签组件component封装、组件生命周期,组件通信

    微信小程序自定义标签组件component封装.组件生命周期,组件通信 本文来说下小程序的自定义标签组件封装. 相比于vue,react的非路由组件,微信小程序的component组件要麻烦些,而且生 ...

  2. java小程序_Java小程序

    java小程序 An applet is a special kind of Java program that runs in a Java enabled browser. This is the ...

  3. java 获取文件所在的文件夹_带你0基础编写一个Java小程序,领略Java程序从编写到编译再到运行的全流程...

    在学习Java之前我们需要先认识下什么是计算机语言?计算机语言又有哪些分类?在了解这些后对我们理解学习帮助是很大的. 要知道计算机语言是人与计算机之间进行信息交流沟通的一种特殊语言,又分为机械语言.汇 ...

  4. 简单Java小程序----有界面ATM机

    继<简单Java小程序---无界面ATM机>以后,尝试对有界面ATM机改写,对面向对象的了解又深了一层! 桌面的创建过程       由于使用的NetBean软件没有提供专用的控件拖拽使用 ...

  5. 基于Bluemix快速构建部署一款Java小程序——微博影响力分析器

    一.前言 近年来IT界风云际会,各种新概念如大数据.云平台.虚拟化等,如雨后春笋般层出不穷.而云平台,可以说是近些年来引领时代新潮的边缘概念之一,各大厂商竞相推出各种云产品,抢占云市场高地.近期,IT ...

  6. java小程序源代码,详细说明

    零基础的小白,如何学好Java?要多动手实践学习Java就像学习数学一样,在懂得理论知识后,一定要实践.学习Java不能搭便车,有些时候,句子和语法看起来很简单,但是亲自实践起来却总有自己不知道的知识 ...

  7. java程序获取外部java程序的控件,将 Java 小程序迁移到 Microsoft J# 浏览器控件-JSP教程,Java技巧及代码...

    visual j# .net 小组 microsoft corporation 摘要:通过 microsoft j# 浏览器控件,开发人员可以将所编写的在 java 虚拟机上运行的 java 小程序迁 ...

  8. java小程序之学生信息_java小程序之学生信息录入界面

    小程序我的项目下载链接:点击打开链接 因为这学期比赛太多,蓝桥杯,团体程序设计大赛,ACM省赛等原因基本这学期的课程都没上,比赛完后开始去上课,java老师让用java写一个学生信息录入界面,把界面中 ...

  9. Java小程序post如何传参,微信小程序向Java后台传输参数的方法实现

    微信小程序向Java后台传输参数的方法实现 首先,微信小程序我使用的是微信web开发者工具 想要向后台传输数据,需要在js中写 在微信小程序的官方文档中可以看到一个api叫wx.request它的作用 ...

  10. 【开发日常】【Java】Java小程序汽车租赁

    <Java小程序--汽车租赁> 1.描述:刚学Java写的小程序,用到类的继承,多态,abstract抽象方法. 2.工具:eclipse.exe 3.功能:选择子类(轿车 / 客车) 选 ...

最新文章

  1. 介绍一下android的事件分发机制
  2. Id选择器和Class选择器
  3. session和cookie的应用场景和区别
  4. python掌握程度怎么判断-想要学习人工智能需要掌握Python到什么程度
  5. JS-String方法
  6. 400名微软员工详细薪资信息泄露,资历和国籍对薪资影响巨大!
  7. 用filter实现web程序的统一认证
  8. linux 无线网卡 延时 丢包 模拟,Linux模拟网络丢包与延迟的方法
  9. 阿里云使用笔记-Lrzsz上传下载文件-centos7
  10. 通讯接口应用笔记3:使用W5500实现Modbus TCP服务器
  11. 可视化数据包分析工具-CapAnalysis
  12. java中字符串后加Box_字符串未显示在JavaFX中ComboBox的Tableview上
  13. php get获取腾讯视频vid,获取腾讯视频源地址链接的方法
  14. sql server死锁_了解SQL Server中的死锁图的XML描述
  15. logback之使用demo
  16. 51nod 1534棋子游戏(分析)
  17. 计算机顶级会议Rankings 英文投稿的一点经验
  18. 国漫的又一次崛起?形成独树一帜的“中国学派”
  19. 批量删除iPhone苹果通讯录的办法
  20. 蓝桥杯陶陶摘苹果C语言,Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2

热门文章

  1. java实现顺序表的增加,删除,查找,打印
  2. 数据结构实验5-递归
  3. STC学习:振动声光报警器
  4. javascript高级程序设计pdf_Java、C语言、Python、PHP、JavaScript五大编程语言,要学哪个?...
  5. WIFI篇(1.windows下的CMD命令)
  6. Mysql之统计数据
  7. NYOJ 2括号配对 栈的运用
  8. 数据结构基本操作_【算法与数据结构 03】数据处理的基本操作——增删查
  9. 卢卡奇总体性原则_读书笔记|卢卡奇物化与无产阶级意识无产阶级的立场(1)...
  10. 算法:链表实现插入排序Insertion Sort List