前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈servlet的生命周期servlet的生命周期详解servlet生命周期中三大重要的时刻

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

作者头像
desperate633
发布2018-08-22 09:51:45
5570
发布2018-08-22 09:51:45
举报
文章被收录于专栏:desperate633desperate633desperate633

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需要实现的业务逻辑等 是否覆盖: 一定要覆盖其中之一。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.07.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • servlet的生命周期详解
  • servlet生命周期中三大重要的时刻
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档