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

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类中定义成员变量,即使非要定义,也不要用它来做逻辑判断;

相关文章:

  • 小白学习顺序表 之 通讯录实现
  • 《算法导论(第4版)》阅读笔记:p115-p126
  • 【GPU并行计算】不同设备上的GPU性能分析
  • 移动安全Android——ROOT检测绕过
  • 大模型技术生态全景解析:从基础组件到AGI的演进之路
  • Python基础知识(IO编程)
  • PCB设计实践(二十六)贴片电容与插件电容的全面解析:差异、演进与应用场景
  • 霍尼韦尔HMR2300-D00-485数字模块
  • PPP 流程已经走到启动阶段并且成功进入了 “STAGE_START_PPP
  • 使用js 写一个函数 将base64 转换成file
  • STM32 SPI通信(硬件)
  • FM信号、900M蜂窝信号,2.6G蜂窝EMC设计要点
  • 字符串和常量池的进一步研究
  • 周界安全防护新突破:AI智能分析网关V4周界入侵检测算法的技术应用
  • 利用 DeepSeek 和摩笔马良设计一张海报
  • 从Android开发聊技术
  • Unitree 5. GO1 3D打印配件
  • VsCode配置
  • 学习日记-day14-5.23
  • 机会成本与沉没成本:如何做出理性经济决策
  • 淮安网站建设/如何做一个自己的网站
  • 山东大良网站建设/种子搜索神器在线引擎
  • .com网站备案/最新军事报道
  • wordpress ftp下载/常州网站优化
  • 毕业设计代做网站jsp/地推是什么
  • 专门做海报的网站/百度网站首页网址