浅谈servlet的生命周期servlet的生命周期详解servlet生命周期中三大重要的时刻

servlet的生命周期是servlet相关知识中很重要的一部分。


servlet从被加载到销毁经历了多个阶段,其中需要我们十分了解每个阶段的意义作用,才能更好地编写相关的servlet程序。

servlet的生命周期详解

下图很好的说明了servlet的各个阶段


Paste_Image.png


  • 首先,容器加载servlet类,从class字节码加载类
  • 随后初始化servlet,使之成为一个对象!servlet的无参构造函数运行,这里不需要我们自己写构造函数,只需要使用编译器的提供的默认构造函数即可(** 相当于new操作 ,成为一个对象),值得注意的是,此处的只是一个普通的对象,还不具备成为一个完整servlet的一些信息和功能,所以我们要进行下一步,也就是init()方法。**
  • 调用init()方法,此方法只在servlet的一生中调用一次,而且必须在容器调用service()之前完成。这一步主要是让上一步对象加上一些东西,使之不再是一个普通的对象,而是一个特殊的servlet对象。
  • 调用service()方法,servlet的一生主要都在这里度过,处理用户请求,每个请求在一个单独的线程里运行。
  • 调用destroy()方法,容器调用这个方法,从而在servlet被杀死之前有机会清理资源。与init一样,destroy也只能调用一次。

servlet生命周期中三大重要的时刻

  1. init() 何时调用:servlet实例创建后,并在servlet能为客户请求提供service服务前,容器要对servlet调用init。 作用: 使你在servlet处理客户请求之前有机会对其进行初始化 是否覆盖: 有可能。如果由初始化代码(如得到一个数据库连接),就要调用init()方法
  2. service() 何时调用: 第一个客户请求到来时,容器会开始一个新线程,或者从线程池分配一个线程,并调用servlet的service()方法。 作用: 这个方法会查看请求,确定http方法 是否覆盖: 不太可能
  3. doGet或者doPost 何时调用: service方法根据请求的http方法调用doGet或者doPost。 作用: 要在这里写代码,你的web需要实现的业务逻辑等 是否覆盖: 一定要覆盖其中之一。

** 每个请求在一个单独的线程里运行。容器不关心是谁的请求,每个到来的请求意味着一个新的线程。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

【团队分享】刀锋铁骑:常见Android Native崩溃及错误原因

王竞原,负责网游刀锋铁骑项目,高级开发工程师,使用C++已有10年,非常喜欢C++,特别是C++11。希望能与广大的C++爱好者多交流。 一、什么是Androi...

5053
来自专栏刘望舒

设计模式(十五)状态模式

前言 建议在阅读本文前先阅读设计模式(十一)策略模式这篇文章,虽说状态模式和策略模式的结构几乎是相同的,但是它们所解决的问题是不同的,读完这两篇文章你就会有了答...

2046
来自专栏杨建荣的学习笔记

从sysbench中学习Lua

我做事喜欢结果导向,喜欢快速迭代,能10分钟搞定,绝对不愿意花15分钟。但是技术行当,还是得耐得住寂寞,因为很多事情10分钟搞不定,可能100分钟,100...

3165
来自专栏JavaEdge

JSP必备知识点servlet VS CGI如何实现 servlet 单线程模式servlet 页面间对象传递的方法有几种jsp VS servlet<jsp:include page=”includ

3696
来自专栏蓝天

cgroup初步分析(1)

cgroup的功能和作用不废话,直说一下cgroup的几条设计准则,有了几条设计准则的约束,就比较容易理解其中的数据结构和函数,至于源代码cgroup.c,无非...

1281
来自专栏假装我会写代码

Laravel 多态关系的表单验证

1534
来自专栏积累沉淀

Python快速学习第十二天--生成器和协程

yield指令,可以暂停一个函数并返回中间结果。使用该指令的函数将保存执行环境,并且在必要时恢复。 生成器比迭代器更加强大也更加复杂,需要花点功夫好好理解贯...

8275
来自专栏C/C++基础

腾讯2016春季校园实习招聘技术岗初试(一面)问题汇总(CC++后台)

2016.4.11日广州参加了腾讯的CC++后台技术一面,安全技术类的面试。面试官人很温和,经历了大概70分钟的问答,特将遇到的面试问题汇总如下,自己总结学习,...

861
来自专栏北京马哥教育

编写Linux Shell脚本的最佳实践

来自:Myths的个人博客 作者:myths 链接:https://blog.mythsman.com/2017/07/23/1/(点击尾部阅读原文前往) 前言...

4139
来自专栏程序员的知识天地

这4个Python实战项目,让你瞬间读懂Python!

Python当下真的很火。Python实战项目,也一直尤为关注,接下来,和大家介绍下十个Python练手的实战项目

1403

扫码关注云+社区

领取腾讯云代金券