当前位置: 首页 > 科技观察

真的很努力:从0手写一个Tomcat,7步搞定!

时间:2023-03-19 00:58:38 科技观察

导引雄猫,这只三足猫,我在大学认识的,一直到现在工作都经常和它打交道。这是一只神奇的猫,今天就让我把你抽象出来,实现你!Tomcat是一个非常流行的WebServer,也是一个符合Servlet规范的容器。那么想一想,Tomcat和我们的web应用是什么关系呢?从感性上来说,我们一般需要将web应用打包成WAR包,部署到Tomcat中。在我们的web应用中,需要指明这个URL是哪个类,哪个方法处理的“无论是原始的Servlet开发还是现在流行的SpringMVC都必须指明”。由于我们的Web应用程序运行在Tomcat中,显然,请求必须首先到达Tomcat。Tomcat实际上会按如下方式处理请求。具体可以参考这篇文章:后端笔记:Tomcat服务器Server.xml配置文件详解!整体结构完善,提供Socket服务。Tomcat的启动肯定是Socket服务,但是支持HTTP协议!这里其实可以用扩展思路,既然Tomcat是基于Socket的,那到底是基于BIO还是NIO还是AIO呢?第二,分发请求,要知道一个Tomcat可以为多个Web应用程序提供服务,显然Tomcat可以向不同的Web应用程序发送URL。第三,我们需要将请求和响应封装成request/response。我们在web应用层,但是我们从来没有封装过request/response。我们直接使用它们。这是因为Tomcat已经为您完成了!话不多说,先来看看工程截图。七步成诗1.封装请求对象这里可以清楚的看到,我们通过输入流解析HTTP协议,得到HTTP请求头的方法和URL。2、封装response对象,按照HTTP协议的格式输出写入。3、Servlet请求处理基类上面说了Tomcat是一个符合Servlet规范的容器,自然Tomcat需要提供API。这里可以看到Servlets常用的doGet/doPost/service方法。4、Servlet实现类提供了这两个具体的Servlet实现,只是为了后续测试!5、Servlet配置应该有点感觉了吧?在servlet开发中,我们会指定通过web.xml中的哪个URL,交给哪个servlet处理。想要了解Tomcat,建议阅读这篇文章后端笔记:Tomcat服务器Server.xml配置文件详解!。6.启动类这里可以看到Tomcat的处理流程,即形成URL对应的Servlet关系,解析HTTP协议,封装请求/响应对象,使用反射实例化具体的Servlet进行处理。7.只需7个步骤即可测试和实现一个简单版本的Tomcat。让我们手动实现它。代码一定不能复制,可以一个一个敲。这样实现之后,你对Tomcat就不会那么陌生了。嗯,就简单的写这些吧,记得自己写代码,巩固自己的感官体验。参考来源:http://tomcat.apache.org/www.jianshu.com/p/dce1ee01fb90