手写一个迷你版的 Tomcat 猫
点击上方“芋道源码”,选择“设为星标”
管她前浪,还是后浪?
能浪的浪,才是好浪!
每天 8:55 更新文章,每天掉亿点点头发...
源码精品专栏
原创 | Java 2020 超神之路,很肝~
中文详细注释的开源项目
RPC 框架 Dubbo 源码解析
网络应用框架 Netty 源码解析
消息中间件 RocketMQ 源码解析
数据库中间件 Sharding-JDBC 和 MyCAT 源码解析
作业调度中间件 Elastic-Job 源码解析
分布式事务中间件 TCC-Transaction 源码解析
Eureka 和 Hystrix 源码解析
Java 并发源码
来源:jianshu.com/p/dce1ee01fb90
前言
Write MyTomcat
2.1 MyRequest
2.2 MyResponse
2.3 MyServlet
2.4 ServletMapping 和 ServletMappingConfig
2.5 MyTomcat
2.6 Test MyTomcat
前言
Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,今天让我来抽象你,实现你!
Write MyTomcat
Tomcat是非常流行的Web Server,它还是一个满足Servlet规范的容器。那么想一想,Tomcat和我们的Web应用是什么关系?
从感性上来说,我们一般需要把Web应用打成WAR包部署到Tomcat中,在我们的Web应用中,我们要指明URL被哪个类的哪个方法所处理(不论是原始的Servlet开发,还是现在流行的Spring MVC都必须指明)。
由于我们的Web应用是运行在Tomcat中,那么显然,请求必定是先到达Tomcat的。Tomcat对于请求实际上会进行下面的处理:
第一:提供Socket服务
Tomcat的启动,必然是Socket服务,只不过它支持HTTP协议而已!
这里其实可以扩展思考下,Tomcat既然是基于Socket,那么是基于BIO or NIO or AIO呢?
第二:进行请求的分发
要知道一个Tomcat可以为多个Web应用提供服务,那么很显然,Tomcat可以把URL下发到不同的Web应用。
第三:需要把请求和响应封装成request/response
我们在Web应用这一层,可从来没有封装过request/response的,我们都是直接使用的,这就是因为Tomcat已经为你做好了!
话不多说,先来看一眼工程截图:
2.1 MyRequest
这里,你可以清楚的看到,我们通过输入流,对HTTP协议进行解析,拿到了HTTP请求头的方法以及URL。
2.2 MyResponse
封装响应对象
基于HTTP协议的格式进行输出写入。
2.3 MyServlet
前文说Tomcat是满足Servlet规范的容器,那么自然Tomcat需要提供API。这里你看到了Servlet常见的doGet/doPost/service方法。
FindGirlServlet和HelloWorldServlet
提供这2个具体的Servlet实现,只是为了后续的测试!
2.4 ServletMapping 和 ServletMappingConfig
你应该有些感觉了吧?
我们在servlet开发中,会在web.xml中通过和来进行指定哪个URL交给哪个servlet进行处理。
2.5 MyTomcat
start 方法
这里,你能够看到Tomcat的处理流程:把URL对应处理的Servlet关系形成,解析HTTP协议,封装请求/响应对象,利用反射实例化具体的Servlet进行处理即可。
2.6 Test MyTomcat
Ok,MyTomcat is so urgly,but i like it!
good night!
欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:
已在知识星球更新源码解析如下:
最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。
提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
手写一个迷你版的 Tomcat 猫相关推荐
- 手写一个迷你版的 Tomcat 喵【转】
原文地址:https://blog.csdn.net/FYGu18/article/details/82921115 前言 Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交 ...
- 极光im java_java手写一个迷你版的Tomcat代码分享
前言 Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道.这是一只神奇的猫,今天让我来抽象你,实现你! Write MyTomcat Tomcat是非常流行的Web Ser ...
- 手写一个迷你版的 Tomcat 喵
前言 Write MyTomcat 2.1 MyRequest 2.2 MyResponse 2.3 MyServlet 2.4 ServletMapping 和 ServletMappingConf ...
- 从零开始写一个迷你版的Tomcat
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | www.jianshu.com/p/dce1ee01fb ...
- 如何手写一个迷你版的RPC
点击上方"Java后端技术栈"关注 持续推送技术干货 前言 在实际后台服务开发中,比如订单服务(开发者A负责)需要调用商品服务(开发者B负责),那么开发者B会和A约定调用API,以 ...
- 手写一个迷你版Spring MVC框架
前期准备 我这里要写的是一个迷你版的Spring MVC,我将在一个干净的web工程开始开发,不引入Spring,完全通过JDK来实现. 我们先来看一眼工程: 工程代码结构 第一:在annotatio ...
- 【手写系列】写一个迷你版的Tomcat
前言 Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道.这是一只神奇的猫,今天让我来抽象你,实现你! Tomcat Write MyTomcat Tomcat是非常流行的 ...
- 用 java 写一个迷你版的 Tomcat
点击"终码一生",关注,置顶公众号 每日技术干货,第一时间送达! 1.前言 Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道.这是一只神奇的猫,今天让 ...
- 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)
前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...
最新文章
- 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)
- 独家 | 如何创建用于离线估算业务指标的测试集?(附代码链接)
- 把C++类成员方法直接作为线程回调函数
- 【JavaSE_06】Java中的数组(array)-思维导图
- 安卓逆向_7 --- 六种快速定位关键 Smali 代码的方法 ( 去掉 RE 广告 )
- 建立丰富多彩的toast的简单实例
- java中函数_java中的函数
- 2198元买真全面屏手机!网友:笑而不语...
- qt撤销与回退_Git撤销某次分支的合并Merge
- SSH终端仿真器:ZOC 8 for Mac
- docker--强制删除none的image镜像
- mysql提高运行效率_提升Mysql执行效率的SQL优化技巧汇总
- python入门基础语法答案_第一阶段:Python开发基础 Python基础语法入门 day03 课后作业...
- 用 C 语言编写一个网络蜘蛛来搜索网上出现的电子邮件地址
- 智慧环卫系统建设方案(智能垃圾分类收运管理)
- 用SPSS做正态分布检验
- ICEM 网格划分技巧(21-5)
- Java Json格式化工具
- html utf 8编码转换器,utf8和gb2312编码在线转换工具
- 利用Jenkins pipeline配置测试工具