从0开始手写一个Tomcat,7步搞定!

简介: 从0开始手写一个Tomcat,7步搞定!

image.pngTomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,今天让我来抽象你,实现你!

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已经为你做好了!

话不多说,先来看一眼工程截图。image.png一、封装请求对象

image.png这里可以清楚的看到,通过输入流,对HTTP 协议进行解析,拿到了HTTP请求头的方法以及URL。


二、封装响应对象

image.png基于HTTP协议的格式进行输出写入。


三、Servlet 请求处理基类

image.png

前文说Tomcat是满足Servlet规范的容器,那么自然Tomcat需要提供API。这里看到了Servlet常见的doGet/doPost/service方法。


四、Servlet 实现类

image.pngimage.png提供这2个具体的Servlet实现,只是为了后续的测试!


五、Servlet 配置

image.png你应该有些感觉了吧?在servlet开发中,会在web.xml中通过<servlet>和<servlet-mapping>来进行指定哪个URL交给哪个servlet进行处理。


六、启动类

image.png

image.pngimage.png这里,你能够看到Tomcat的处理流程,即把URL对应处理的Servlet关系形成,解析HTTP协议,封装请求/响应对象,利用反射实例化具体的Servlet进行处理即可。


七、测试

image.png实现一个简易版的Tomcat就这么7大步搞定,大家都来动手实现一下吧,代码最好不要复制,自己动手一个个敲,这样实现之后,对Tomcat就没那么陌生了。

目录
相关文章
|
前端开发 Java 应用服务中间件
手写一个迷你版的 Tomcat 猫
前言 Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,今天让我来抽象你,实现你!
手写一个迷你版的 Tomcat 猫
|
前端开发 Java 应用服务中间件
从 0 开始手写一个Tomcat,7 步搞定!
Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,今天让我来抽象你,实现你!
178 0
从 0 开始手写一个Tomcat,7 步搞定!
|
Java 应用服务中间件 容器
|
移动开发 应用服务中间件 容器
手写一个简化版Tomcat
Tomcat作为Web服务器深受市场欢迎,有必要对其进行深入的研究。那么Tomcat是如何工作的?
2496 0
|
Java 应用服务中间件 关系型数据库
Java 手写Tomcat
1). 创建Java项目Tomcat 2). 创建Servlet接口 public interface IServlet { public void service(); } 3).
867 0
|
Web App开发 应用服务中间件 Windows
手写 tomcat (nio)
手写 tomcat (nio)   下载 :demo     测试:          项目结构:        public class NIOSocketServerForTomcat { private String host = "127.
827 0
|
4月前
|
安全 应用服务中间件 网络安全
Tomcat如何配置PFX证书?
【10月更文挑战第2天】Tomcat如何配置PFX证书?
336 7
|
4月前
|
存储 算法 应用服务中间件
Tomcat如何配置JKS证书?
【10月更文挑战第2天】Tomcat如何配置JKS证书?
553 4
|
1月前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
6月前
|
网络协议 Java 应用服务中间件
tomcat配置域名及HTTPS
tomcat配置域名及HTTPS