从零手写tomcat-Tomcat源码分析

一、整体设计思路

1、tomcat也是一个java程序,也有一个端口号
2、tomcat端口号接收用户请求(此处有多线程处理)
3、根据用户请求的URL映射到具体的项目servlet(项目的servlet在web.xml中有配置)
4、执行servlet的service方法然后转发到具体的doGet或者doPost方法
5、返回浏览器响应

设计图

从零手写tomcat-Tomcat源码分析

二、源码设计

1、加载某个目录下的所有的web.xml。

从零手写tomcat-Tomcat源码分析

2、使用xml解析工具得到web.xml中配置的servlet,并使用类加载器加载进JVM

从零手写tomcat-Tomcat源码分析

3、接受请求,每个请求是一个线程

从零手写tomcat-Tomcat源码分析

4、根据请求的URL获取对应的servlet, 然后执行servlet的Service方法

从零手写tomcat-Tomcat源码分析
Servlet的service方法会根据请求method来判断是执行doGet方法还是doPost方法
从零手写tomcat-Tomcat源码分析

5、创建Request和Reponse

Request

从零手写tomcat-Tomcat源码分析

response

从零手写tomcat-Tomcat源码分析
注意:因为Servlet的service方法需要根据请求的Request的method方法的返回值来判断是执行doGet还是doPost。故需要设置Request的method方法的返回值。
从零手写tomcat-Tomcat源码分析

原文链接http://www.bxoon.com/view/19