servet的生命周期是怎样的?
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的生命周期是怎样的?相关推荐
- serclet生命周期
1.serclet生命周期 servlet生命周期 当启动Servlet容器时,容器首先查找一个配置文件web.xml,接收到一个请求 后会判断实例是否存在,存在的话就调用servlet类无参的构造方 ...
- LTV 即用户生命周期价值
20220321 https://mp.weixin.qq.com/s/kPoojfRCbvCCV4zpnCimmQ 指标计算详细介绍 数据分析|如何做好用户生命周期价值分析 LTV https:// ...
- Harmony生命周期
Harmony生命周期 系统管理或用户操作等行为,均会引起Page实例在其生命周期的不同状态之间进行转换.Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放 ...
- Activity在有Dialog时按Home键的生命周期
当一个Activity弹出Dialog对话框时,程序的生命周期依然是onCreate() - onStart() - onResume(),在弹出Dialog的时候并没有onPause()和onSto ...
- 横竖屏切换时Activity的生命周期
1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏执行一次,切竖屏执行两次. 2.设置Activity的android:configChang ...
- Android中Service生命周期、启动、绑定、混合使用
一.Activity和Service如何绑定: 1.Service和Activity之间的连接可以用ServiceConnection来实现.实现一个ServiceConnection对象实例,重写o ...
- Cocos生命周期回调
Cocos Creator 为组件脚本提供了生命周期的回调函数.用户只要定义特定的回调函数,Creator 就会在特定的时期自动执行相关脚本,用户不需要手工调用它们. 目前提供给用户的生命周期回调函数 ...
- Fragment 使用 replace 的方式实现切换 以及切换的时候Fragment 生命周期
这个主要代码在activity里面 如下 public class ReplaceActivity extends AppCompatActivity implements View.OnClickL ...
- Fragment 使用 show 和 hide 的方式实现切换 以及切换的时候Fragment 生命周期
实现的效果如下图 主要的代码在activity 这里贴出来了 public class ShowActvity extends AppCompatActivity implements View.On ...
最新文章
- Tomcat startup.bat 原理分析
- opencv 分割边界_电影观众:场景边界分割
- 重学java基础第十一课:基本的dos命令
- c#中字符串截取使用的方法
- 06-10 Jenkins 配置 allure 报告
- CC2530 串口通信
- 《我的眼睛--图灵识别》第九章:训练:制作识别字库
- 如何用开源软件办一场技术大会?
- 统计学基础——方差、协方差、标准差(标准偏差/均方差)、标准误、均方误差、均方根误差(标准误差)的区别
- CSS特效——图片扫描
- android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框
- 大数据在高校的应用场景_大数据技术在高校教育中的应用
- 电脑(PC端)多开两个或多个微信
- Confluence备份恢复报错: AO_187CCC_SIDEBAR_LINK
- 阿里云国际站代理商:美国和香港服务器怎么配置采购?
- 有趣的智能合约蜜罐分析(上)
- dock接口_手机统一充电接口,苹果反对无效,安卓手机的充电器接口早已统一...
- Java对接ansible自动运维化平台
- K8S 生态周报| KIND v0.8 正式发布
- Ubuntu - 历史与发展过程
热门文章
- 练习-Java字符串之StringToKenizer类分割字符串之计算手机话费总额
- SpringSecurity的旅途(喜欢的话,可以点个赞哦~)
- android7.1root工具,Android模拟器Root,Android7.1.1
- 做玫瑰花的方法 用纸_用纸折玫瑰花的方法简单又快速
- 二进制数据流方式实现 个人头像的读取、上传、修改------善良公社项目
- 糖葫芦(齐大第十一届校赛)
- Luogu P1860 新魔法药水
- 什么是大数据 大数据的特点
- 如何做SEO(关键词)
- 2021四川高考成绩位次查询,四川高考排名对应学校-四川高考位次查询(2021年文科参考)...