真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

栏目: Java · 发布时间: 5年前

内容简介:Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,今天让我来抽象你,实现你!Tomcat 是非常流行的 Web Server,它还是一个满足 Servlet 规范的容器。那么想一想,Tomcat 和我们的 Web 应用是什么关系?

真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

导引

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

Tomcat 是非常流行的 Web Server,它还是一个满足 Servlet 规范的容器。那么想一想,Tomcat 和我们的 Web 应用是什么关系?

从感性上来说,我们一般需要把 Web 应用打成 WAR 包部署到 Tomcat 中,在我们的 Web 应用中,我们要指明 URL 被哪个类的哪个方法所处理「不论是原始的 Servlet 开发,还是现在流行的 Spring MVC 都必须指明」。

由于我们的 Web 应用是运行在 Tomcat 中,那么显然,请求必定是先到达Tomcat 的。Tomcat 对于请求实际上会进行如下的处理。具体还可参考这篇:后端须知:Tomcat服务器的 Server.xml 配置文件详解!

总体结构

第一,提供 Socket 服务

Tomcat 的启动,必然是 Socket 服务,只不过它支持 HTTP 协议而已!

这里其实可以扩展思考下,Tomcat 既然是基于 Socket,那么是基于BIO or NIO or AIO 呢?

第二,进行请求的分发

要知道一个 Tomcat 可以为多个 Web 应用提供服务,那么很显然,Tomcat 可以把 URL 下发到不同的Web应用。

第三,需要把请求和响应封装成 request / response

我们在 Web 应用这一层,可从来没有封装过 request/response 的,我们都是直接使用的,这就是因为 Tomcat 已经为你做好了!

话不多说,先来看一眼工程截图。

真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

七步成诗

一、封装请求对象

真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

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

二、封装响应对象

真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

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

三、Servlet 请求处理基类

真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

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

四、Servlet 实现类

真抓实干:从 0 开始手写一个Tomcat,7 步搞定!
真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

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

五、Servlet 配置

真抓实干:从 0 开始手写一个Tomcat,7 步搞定!
真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

你应该有些感觉了吧?

我们在servlet开发中,会在 web.xml 中通过 来进行指定哪个 URL 交给哪个 servlet 进行处理。了解 Tomcat 建议大家看下这篇文章 后端须知:Tomcat服务器的 Server.xml 配置文件详解!。

六、启动类

真抓实干:从 0 开始手写一个Tomcat,7 步搞定!
真抓实干:从 0 开始手写一个Tomcat,7 步搞定!
真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

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

七、测试

真抓实干:从 0 开始手写一个Tomcat,7 步搞定!

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

好了,就简单写这些了,记得自己动手撸一边代码,夯实你的感觉体验。

参考来源:

http://tomcat.apache.org/

www.jianshu.com/p/dce1ee01fb90


以上所述就是小编给大家介绍的《真抓实干:从 0 开始手写一个Tomcat,7 步搞定!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

VISUAL FOXPRO程序设计实用教程习题解答与实验指导

VISUAL FOXPRO程序设计实用教程习题解答与实验指导

康萍 / 中国经济出版社 / 2006-6 / 22.80元

本书为康萍等主编的《VisUal FosxPro程序设计实用教程》的配套习题解答与实验指导教材,由常年工作在计算机教学第一线的教师组织编写。全书共分为三部分:第1部分为实验指导,包括33个实验,分别讲述了每个实验的实验目的.实验内容和操作步骤;第2部分为开发实例,介绍了图书营理系统的分析、设计与实现过程;第3部分为配套教材各章节习题参考答案。   本书实验部分可操作性及实用性较强。系统开发案......一起来看看 《VISUAL FOXPRO程序设计实用教程习题解答与实验指导》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码