阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Servlet生命周期

384次阅读
没有评论

共计 2068 个字符,预计需要花费 6 分钟才能阅读完成。

一、生命周期概述

所谓 xxx 的生命周期,就是说 xxx 的出生、服务,以及死亡。Servlet 生命周期也是如此!与 Servlet 的生命周期相关的方法有:

​ void init(ServletConfig);

​ void service(ServletRequest,ServletResponse);

​ void destroy();

二、Servlet 的出生

服务器会在 Servlet 第一次被访问时创建 Servlet,或者是在服务器启动时创建 Servlet。如果服务器启动时就创建 Servlet,那么还需要在 web.xml 文件中配置。也就是说默认情况下,Servlet 是在第一次被访问时由服务器创建的。

而且一个 Servlet 类型,服务器只创建一个实例对象,例如在我们首次访问 http://localhost:8080/helloservlet/helloworld 时,服务器通过“/helloworld”找到了绑定的 Servlet 名称为 com.tyschollo.servlet.HelloServlet,然后服务器查看这个类型的 Servlet 是否已经创建过,如果没有创建过,那么服务器才会通过反射来创建 HelloServlet 的实例。当我们再次访问 http://localhost:8080/helloservlet/helloworld 时,服务器就不会再次创建 HelloServlet 实例了,而是直接使用上次创建的实例。

在 Servlet 被创建后,服务器会马上调用 Servlet 的 void init(ServletConfig) 方法。请记住,Servlet 出生后马上就会调用 init() 方法,而且一个 Servlet 的一生。这个方法只会被调用一次。这好比小孩子出生后马上就要去剪脐带一样,而且剪脐带一生只有一次。

我们可以把一些对 Servlet 的初始化工作放到 init 方法中!

三、Servlet 服务

当服务器每次接收到请求时,都会去调用 Servlet 的 service() 方法来处理请求。服务器接收到一次请求,就会调用 service() 方法一次,所以 service() 方法是会被调用多次的。正因为如此,所以我们才需要把处理请求的代码写到 service() 方法中!

四、Servlet 的离去

Servlet 是不会轻易离去的,通常都是在服务器关闭时 Servlet 才会离去!在服务器被关闭时,服务器会去销毁 Servlet,在销毁 Servlet 之前服务器会先去调用 Servlet 的 destroy() 方法,我们可以把 Servlet 的临终遗言放到 destroy() 方法中,例如对某些资源的释放等代码放到 destroy() 方法中。

五、测试生命周期方法

修改 HelloServlet 如下,然后再去访问 http://localhost:8080/helloservlet/helloworld

package com.tyschool.servlet.demo; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class HelloServlet implements Servlet {public void init(ServletConfig config) throws ServletException {System.out.println("Servlet 被创建了!"); } public ServletConfig getServletConfig() {return null;} public void destroy() {System.out.println("Servlet 要离去了!"); } public String getServletInfo() {return null;} public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {System.out.println("hello servlet!"); } }

说明:在首次访问 HelloServlet 时,init 方法会被执行,而且也会执行 service 方法。再次访问时,只会执行 service 方法,不再执行 init 方法。在关闭 Tomcat 时会调用 destroy 方法。

测试步骤

​需求:使用 Eclipse 来创建一个 helloservlet 项目

A、在 Eclipse 中创建 helloservlet Web 项目

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

B、在项目中创建包

Servlet 生命周期

Servlet 生命周期

C、在包中创建 Servlet

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

d、手动导入 tomcat 运行环境

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

e、把项目部署到 server 中

Servlet 生命周期
Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

f、浏览器测试

Servlet 生命周期

Servlet 生命周期

补充:用实现 Servlet 接口的方式创建 Servlet

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

Servlet 生命周期

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-06发表,共计2068字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7822512
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...