Inside tomcat(一)-------你所认识的容器是怎样的?

本文探讨了Servlet规范如何定义了servlet的生命周期,并介绍了容器需要实现的功能,包括实现Servlet API规范、启动Socket监听、封装HTTP请求及响应、管理线程池等。

最近在研究tomcat容器,打算写一系列文章和大家一起分享。本文第一篇作为引子,不涉及任何tomcat的底层实现。

 

我们知道servlet规范

规定servlet的生命周期:init->service->doXXX-->destory()。

还规定一个请求必须被封装成HttpServletRequest再由servlet的service方法来处理,并用HttpServletResponse来表示返回对象。

还规定Session必须被封装成HttpSession的形式。

Servlet规范还规定了Filter过滤器可以拦截请求做一些处理。

Servlet规范还规定了监听器Listener可以在context初始化、servlet初始化等一系列事件发生时触发一些事情。

 

Servlet规范使得我们的应用可以和底层的socket、字节流等完全隔离。

但是servlet规范只是个接口,真正使得我们实现了这些隔离的工作是由容器帮我们做的。

 

那么你所认为的容器应该是怎么样的?ServletJsp容器应该做些什么?

1:实现Servlet api规范。这是最基础的一个实现,servlet api大部分都是接口规范。如requestresponsesessioncookie。为了我们应用端能正常使用,容器必须有一套完整实现。

2:启动Socket监听端口,等待http请求。

3:获取http请求,分发请求给不同的协议处理器,如httphttps在处理上是不一样的。

4:封装请求,构造HttpServletRequest。把socket获取的用户请求字节流转换成java对象httprequest。构造httpResponse

5:调用(若未创建,则先加载)servlet,调用init初始化,执行servlet.service()方法。

6:为httpResponse添加header等头部信息。

7socket回写流,返回满足http协议格式的数据给浏览器。

8:实现JSP语法分析器,JSP标记解释器。JSPservlet实现和渲染引擎。

9JNDIJMX等服务实现。容器一般额外提供命名空间服务管理。

10:线程池管理,创建线程池,并为每个请求分配线程。

11…..

 

 

还有没有其他的事情需要容器实现的?大家补充,哈哈。

 

那么tomcat是如何实现的呢?下面将会有一系列总结和大家一起探讨哈。

 

附上一个tomcat deverloper guide,基于tomcat6的,有兴趣的大家一起研究

 

 

 

 

数据集介绍:垃圾分类检测数据集 、基础信息 数据集名称:垃圾分类检测数据集 图片数量: 训练集:2,817张图片 验证集:621张图片 测试集:317张图片 总计:3,755张图片 分类类别: - 金属:常见的金属垃圾材料。 - 纸板:纸板类垃圾,如包装盒等。 - 塑料:塑料类垃圾,如瓶子、容器等。 标注格式: YOLO格式,包含边界框和类别标签,适用于目标检测任务。 数据格式:图片来源于实际场景,格式为常见图像格式(如JPEG/PNG)。 二、适用场景 智能垃圾回收系统开发: 数据集支持目标检测任务,帮助构建能够自动识别和分类垃圾材料的AI模型,用于自动化废物分类和回收系统。 环境监测与废物管理: 集成至监控系统或机器人中,实时检测垃圾并分类,提升废物处理效率和环保水平。 学术研究与教育: 支持计算机视觉与环保领域的交叉研究,用于教学、实验和论文发表。 三、数据集优势 类别覆盖全面: 包含三种常见垃圾材料类别,覆盖日常生活中主要的可回收物类型,具有实际应用价值。 标注精准可靠: 采用YOLO标注格式,边界框定位精确,类别标签准确,便于模型直接训练和使用。 数据量适中合理: 训练集、验证集和测试集分布均衡,提供足够样本用于模型学习和评估。 任务适配性强: 标注兼容主流深度学习框架(如YOLO等),可直接用于目标检测任务,支持垃圾检测相关应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值