加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

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

发布时间:2019-05-14 21:14:11 所属栏目:业界 来源:今日头条
导读:导引 Tomcat,这只3脚猫,大学的时辰就熟悉了,直到此刻事变中,也常会和它打交道。这是一只神奇的猫,本日让我来抽象你,实现你! Tomcat 长短常风行的 Web Server,它照旧一个满意 Servlet 类型的容器。那么想一想,Tomcat 和我们的 Web 应用是什么相关?

 导引

Tomcat,这只3脚猫,大学的时辰就熟悉了,直到此刻事变中,也常会和它打交道。这是一只神奇的猫,本日让我来抽象你,实现你!

Tomcat 长短常风行的 Web Server,它照旧一个满意 Servlet 类型的容器。那么想一想,Tomcat 和我们的 Web 应用是什么相关?

从感性上来说,我们一样平常必要把 Web 应用打成 WAR 包陈设到 Tomcat 中,在我们的 Web 应用中,我们要指明 URL 被哪个类的哪个要领所处理赏罚「岂论是原始的 Servlet 开拓,照旧此刻风行的 Spring MVC 都必需指明」。

因为我们的 Web 应用是运行在 Tomcat 中,那么显然,哀求一定是先达到Tomcat 的。Tomcat 对付哀求现实上会举办如下的处理赏罚。详细还可参考这篇:后端须知:Tomcat处事器的 Server.xml 设置文件详解!

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

总体布局

第一,提供 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

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读