手动实现一个简易版 tomcat

tomcat简介

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

图片描述

手动实现

项目结构如下图所示

图片描述

接下来我们就开始一步步实现,有servlet开发经验的对于Request和Response一定不陌生,所以就先实现自己的Request和Response。首先实现Response如下所示。

图片描述

接着来实现自己的Reponse,如下图所示。

图片描述

有了自己的请求信息和响应信息,那接下来就要写servlet了。通常写自己的Servlet的时候要继承一个Servlet的父类HttpServlet,所以首先要写一个Servlet的父类,代码如下。

图片描述

那么接下来就要写自己业务相关的Servlet,这里写一个和学生相关的Servlet,叫StudentServlet,还有一个和老师相关的Servlet,叫TeacherServlet。具体的代码分别如下。

图片描述

和老师相关的Servlet如下:

图片描述

因为浏览器在请求的时候还会请求浏览器上面显示的favicon.ico,所以要编写一个相关的servlet来处理请求,代码如下。

图片描述

以上就是写的跟具体实际当中业务相关的代码,还记得在Servlet的时候要在项目web.xml中配置请求地址和具体的servlet的映射关系,所以此处要手动来实现一个映射的关系。具体代码如下。

图片描述

以上是每个具体的Servlet的信息,接下来要写一个存储有映射关系的类,代码如下。

图片描述

接下来就是真正的主角登场了,那就是对于请求做分发处理的相关逻辑了,具体代码如下所示。

图片描述

图片描述

如果没有问题的话,启动main函数之后,在浏览器发起具体的请求会看到如下显示内容。

图片描述

图片描述

总结

实际的tomcat要比这复杂的多,这里只是简单了实现了tomcat的一个处理逻辑的demo,比如tomcat多端口的配置,数据源的配置,热部署等相关功能,当然只要了解了主要思想,相信全部深入的了解也就没有那么难了。