当前位置: 首页 > web >正文

Servlet的继承关系和生命周期

1.继承关系:

javax.servlet.Servlet接口->javax.servlet.GenericServlet抽象类

->javax.servlet.http.HttpServlet抽象子类

2.相关方法:

javax.servlet.Servlet:

(1)void init(config)   -初始化方法

(2)void service(request, response) -服务方法   (这是个抽象方法,在HttpServlet中进行实现)

(3)void destroy() -销毁方法

主要说说这个service方法:它在实现时首先要有一个获取申请方式的操作:

String method = request.getMethod();

根据if判断,请求方式1不同,调用相应的do方法

而在这个HttpServlet中,do方法都差不多,需要自己去自己的servlet中改写do方法,不然未改写而贸然请求会报错

3.servlet的生命周期:

(1)servlet的生命周期对应三个方法   init() service() destroy()

(2)默认情况下,收到请求后开始实例化,初始化,并开始服务,后面只是开启服务,调用service方法;这种方式的启动速度很快,但是响应速度,特别是第一个用户的响应速度很慢,我们可以通过设置<load-on-startup>数字<load-on-startup>来设置servlet的启动先后顺序,这样设置后启动服务器时会耗时更多,因为启动即创建实例,初始化,但后续的响应速度很快,而且很公平;(其中数字越小,越先启动,0最小)

所以一个servlet类只会创建一个实例,即单例的;这种单例设计模式有弊端:线程不安全;

下面有个图:

所以我们一般不建议servlet类中定义成员变量,即使非要定义,也不要用它来做逻辑判断;

http://www.xdnf.cn/news/8365.html

相关文章:

  • 黑马点评-实现分布式锁
  • dify多实例部署,一台机器部署多个dify实例
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(28):ばかり
  • CASIA-HWDB的gnt转换为png图片
  • R语言学习--Day07--T分布与T检验
  • word设置如“第xx页 共xx页”格式的页码
  • OPC Client第5讲(wxwidgets):初始界面的事件处理;按照配置文件初始化界面的内容
  • 【Django DRF】一篇文章总结Django DRF框架
  • 鸿蒙Ability对比Android的Fragment
  • uniapp编译小程序,不支持:class语法
  • 机器学习第二十五讲:TensorFlow → 乐高式搭建深度学习模型
  • kafka吞吐量提升总结
  • halcon 连接相机
  • 消息队列RabbitMQ与AMQP协议详解
  • oracle数据库生成awr报告,排查数据库服务器CPU100%,系统卡顿,慢sql,根据sqlid查询关键信息,如会话SID,客户端机器名
  • 从零搭建SpringBoot Web单体项目3、SpringBoot 核心组件深度解析
  • leetcode hot100:十三、解题思路大全:多维动态规划(不同路径、最小路径和、最长回文子串、 最长公共子序列、编辑距离)
  • 微信小程序用<web-view 嵌入h5网页,改了h5网页后,可能是缓存的原因,小程序上看还是原来的,怎么处理
  • 【MySQL成神之路】MySQL索引相关介绍
  • 应届本科生简历制作指南
  • MySQL数据 在 磁盘上是什么样子的
  • DiagramJS设计原理解读(二)
  • CUDA 加速的基础线性代数库cuBLAS
  • Issac Lab安装
  • SPL做量化---MFI(资金流量指标)
  • 水陆两栖车,水域救援与陆地行动的桥梁
  • 掌握正则表达式:从基础语法到工程实践
  • Redis--SpringDataRedis详解
  • KCTF-CCG CrackMe crypto 1.0
  • TDengine 高可用——三副本