10|Servlet Wrapper:如何维护Servlet生命周期及实现容器管理?
郭屹
你好,我是郭屹。今天我们继续手写 MiniTomcat。
上节课我们把 Request 和 Response 从无状态变成了有状态,实现了 Session 和 Cookie 的管理,还实现了同一页面的资源请求复用 Socket,减少了性能消耗。
到目前为止,我们已经基本将浏览器与服务器之间的通信处理完毕。接下来我们再看后端服务器,现在我们还是使用 ServletProcessor 简单地调用 Servlet 的 service 方法,接下来我们考虑将其扩展,对 Servlet 进行管理,这就引入了 Container 容器的概念。我们计划让 Container 和 Connector 配合在一起工作,前者负责后端 Servlet 管理,而后者则负责通信管理。
初步构建容器后,我们还会考虑使用 Wrapper 进行包装,用于维护 Servlet 的生命周期:初始化、提供服务、销毁这个全过程,把 Servlet 完全纳入程序自动管理之中,让应用程序员更少地感知到底层的配置,更专注于业务逻辑本身。
接下来我们一起来动手实现。
项目结构
这节课我们新增 ServletContainer 与 ServletWrapper 两个类,分别定义 Container 与 Wrapper,你可以看一下现在的程序结构。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何在手写MiniTomcat项目中实现Servlet的管理和容器管理。作者首先介绍了项目结构,并引入了ServletContainer和ServletWrapper两个类,分别用于定义Servlet的管理容器和维护Servlet的生命周期。在ServletContainer类中,作者使用ClassLoader来加载Servlet类并创建实例,并通过Map存储Servlet实例,实现了对Servlet的管理。同时,作者对HttpServer的启动类进行了改造,引入了ServletContainer容器的概念,将Servlet管理和网络通信功能分离。在ServletWrapper类中,作者通过loadServlet()方法加载并实例化Servlet,进一步实现了对Servlet的管理和生命周期维护。文章内容涉及了Servlet的生命周期管理、容器管理和软件结构拆分的技术特点。通过对ServletContainer和ServletWrapper的介绍和实现,读者可以了解如何在MiniTomcat项目中实现对Servlet的管理和容器管理,以及如何进行软件结构的拆分和功能的分离。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一个 MiniTomcat》,新⼈⾸单¥59
《手把手带你写一个 MiniTomcat》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- peter请教老师两个问题: Q1:为什么Cookie有实现而Session没有实现? 代码中的Session类实现了HttpSession接口,但代码中用的Cookie是系统提供的。为什么Session就没有系统提供的实现类? Q2:C++服务器有哪些? 看到一篇介绍用C++开发服务器的文章,说明有C++开发的服务器。Tomcat是用Java开发的。那么,有什么C++开发的服务器产品?用在什么场景下?互联网公司一般不用C++服务器吧。
作者回复: 应该是Cookie比较简单吧,javax.servlet.http里面就直接实现了。 C++服务器一样多得很,Apache,Nginx,微软的IIS,还有很多游戏服务器,为了性能都用的C/C++写的。
2023-12-30归属地:北京 - HH🐷🐠请一个副总吧, 管理每个部门的 Connector 和 Container, 负责他们两个创建和相互引用
作者回复: 各自都有各自的解决方案。我是这么想的,connector相当于公司的销售部门,把客户引进到公司,container是客户服务部门,满足客户需求。所以作为一个公司,还要有一些管理职能的部门,以及支撑销售部和客户服务部的部门。
2023-12-29归属地:广东2 - peter发的留言怎么没有显示出来,再发一次: Q1:为什么Cookie有实现而Session没有实现? 代码中的Session类实现了HttpSession接口,但代码中用的Cookie是系统提供的。为什么Session就没有系统提供的实现类? Q2:C++服务器有哪些? 看到一篇介绍用C++开发服务器的文章,说明有C++开发的服务器。Tomcat是用Java开发的。那么,有什么C++开发的服务器产品?用在什么场景下?互联网公司一般不用C++服务器吧。2024-01-01归属地:北京1
收起评论