Servlet初始化、运行、销毁全部过程

Servlet的生命周期是由servlet的容器来控制的。分为3个阶段:初始化阶段、运行阶段、销毁阶段。

初始化阶段:

初始化阶段步骤:

Ø  Servlet容器加载servlet类,把它的.Class文件中的数据读到内存中。

Ø Servlet容器创建servletConfig对象。servletConfig对象包含了servlet的初始化配置信息。此外servlet容器还会使得servletConfig对象与当前的web应用的servletContext对象关联。

Ø  Servlet容器创建servlet对象。

Ø Servlet容器调用servlet对象的init(ServletConfig  config)方法。

通过初始化步骤,创建了servlet对象和servletConfig对象,并且servlet对象与servletConfig对象关联,而servletConfig对象又与当前对象的servletContext对象关联。当servlet容器完成servlet后,servlet对象只要通过getServletContext()方法就能得到web应用的servletContext对象。

注:servlet初始化的情况:

(1)当web应用处于运行阶段时,特定的servlet被客户端首次请求访问。

(2)在web.xml文件中为servlet设置了<load-on-startup>元素

<servlet>

<servlet-name>servlet1</servlet-name>

<servlet-class>servlet.servlet1</servlet-class>

<load-on-startup>0</load-on-startup>

</servlet>

说明:

在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是:

标记容器是否在启动的时候就加载这个servlet。

当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;

当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。

正数的值越小,启动该servlet的优先级越高。

(3) 当web应用被重新启动时,web应用中的所有servlet会在特定的时间被重新初始化。

运行阶段

在这个阶段sevlet可以随时响应客户端的请求。当servlet容器接到访问特定的servlet请求时,servlet容器会创建针对与这个请求的servletRequest和servletResponse对象,然后调用service()方法,并把这两个对象当做参数传递给service()方法。Service()方法通过servletRequest对象获得请求信息,并处理该请求,再通过servletResponse对象生成响应结果。

【不管是post还是get方法提交,都会在service中处理,然后,由service来交由相应的doPost或doGet方法处理,如果你重写了service方法,就不会再处理doPost或doGet了,如果重写sevice()方法,可以自己转向doPost()或doGet()方法】

注:当servlet容器把servlet生成的响应结果发送给客户后,servlet容器会销毁servletRequest和sevletResponse对象。

销毁阶段

当Web应用被终止时,servlet容器会先调用web应用中所有的servlet对象的destroy()方法,然后在销毁servlet对象。此外容器还会销毁与servlet对象关联的servletConfig对象。

在destroy()方法的实现中,可以释放servlet所占用的资源。如关闭文件输入输出流,关闭与数据库的连接。

注:sevlet的生命周期中,servlet的初始化和销毁只会发生一次,因此init()和destroy()方法只能被servlet容器调用一次,儿service()方法取决与servlet被客户端访问的次数。

转自:https://blog.csdn.net/h12kjgj/article/details/55194289

servet的生命周期是怎样的?相关推荐

  1. serclet生命周期

    1.serclet生命周期 servlet生命周期 当启动Servlet容器时,容器首先查找一个配置文件web.xml,接收到一个请求 后会判断实例是否存在,存在的话就调用servlet类无参的构造方 ...

  2. LTV 即用户生命周期价值

    20220321 https://mp.weixin.qq.com/s/kPoojfRCbvCCV4zpnCimmQ 指标计算详细介绍 数据分析|如何做好用户生命周期价值分析 LTV https:// ...

  3. Harmony生命周期

    Harmony生命周期 系统管理或用户操作等行为,均会引起Page实例在其生命周期的不同状态之间进行转换.Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放 ...

  4. Activity在有Dialog时按Home键的生命周期

    当一个Activity弹出Dialog对话框时,程序的生命周期依然是onCreate() - onStart() - onResume(),在弹出Dialog的时候并没有onPause()和onSto ...

  5. 横竖屏切换时Activity的生命周期

    1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏执行一次,切竖屏执行两次. 2.设置Activity的android:configChang ...

  6. Android中Service生命周期、启动、绑定、混合使用

    一.Activity和Service如何绑定: 1.Service和Activity之间的连接可以用ServiceConnection来实现.实现一个ServiceConnection对象实例,重写o ...

  7. Cocos生命周期回调

    Cocos Creator 为组件脚本提供了生命周期的回调函数.用户只要定义特定的回调函数,Creator 就会在特定的时期自动执行相关脚本,用户不需要手工调用它们. 目前提供给用户的生命周期回调函数 ...

  8. Fragment 使用 replace 的方式实现切换 以及切换的时候Fragment 生命周期

    这个主要代码在activity里面 如下 public class ReplaceActivity extends AppCompatActivity implements View.OnClickL ...

  9. Fragment 使用 show 和 hide 的方式实现切换 以及切换的时候Fragment 生命周期

    实现的效果如下图 主要的代码在activity 这里贴出来了 public class ShowActvity extends AppCompatActivity implements View.On ...

最新文章

  1. Tomcat startup.bat 原理分析
  2. opencv 分割边界_电影观众:场景边界分割
  3. 重学java基础第十一课:基本的dos命令
  4. c#中字符串截取使用的方法
  5. 06-10 Jenkins 配置 allure 报告
  6. CC2530 串口通信
  7. 《我的眼睛--图灵识别》第九章:训练:制作识别字库
  8. 如何用开源软件办一场技术大会?
  9. 统计学基础——方差、协方差、标准差(标准偏差/均方差)、标准误、均方误差、均方根误差(标准误差)的区别
  10. CSS特效——图片扫描
  11. android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框
  12. 大数据在高校的应用场景_大数据技术在高校教育中的应用
  13. 电脑(PC端)多开两个或多个微信
  14. Confluence备份恢复报错: AO_187CCC_SIDEBAR_LINK
  15. 阿里云国际站代理商:美国和香港服务器怎么配置采购?
  16. 有趣的智能合约蜜罐分析(上)
  17. dock接口_手机统一充电接口,苹果反对无效,安卓手机的充电器接口早已统一...
  18. Java对接ansible自动运维化平台
  19. K8S 生态周报| KIND v0.8 正式发布
  20. Ubuntu - 历史与发展过程

热门文章

  1. 练习-Java字符串之StringToKenizer类分割字符串之计算手机话费总额
  2. SpringSecurity的旅途(喜欢的话,可以点个赞哦~)
  3. android7.1root工具,Android模拟器Root,Android7.1.1
  4. 做玫瑰花的方法 用纸_用纸折玫瑰花的方法简单又快速
  5. 二进制数据流方式实现 个人头像的读取、上传、修改------善良公社项目
  6. 糖葫芦(齐大第十一届校赛)
  7. Luogu P1860 新魔法药水
  8. 什么是大数据 大数据的特点
  9. 如何做SEO(关键词)
  10. 2021四川高考成绩位次查询,四川高考排名对应学校-四川高考位次查询(2021年文科参考)...