挖坑挖了这么长时间也该继续填坑了,上文书讲到从零开始写一个Tomcat(贰)--建立动态服务器,讲了如何让服务器解析请求,分离servlet请求和静态资源请求,读取静态资源文件输出或是通过URLClassLoader找到我们请求的servlet,反射生成对应的实例,调用其service方法,传递初级解析的request和response,完成请求.

这很tomcat,but too simple

阅读本文,你将了解

  • 连接器(connector),处理器(processor)逻辑分离
  • 如何高效的解析请求中的header,parameters
  • 生成更加完善的ServletRequest和ServletResponse
  • Tomcat经典的facade模式

本章的代码部分是自己写的,更多的是从Tomcat源码上扒下来的

HttpConnector / HttpProcessor

之前的AsServer的主类中实现了所有接收请求,解析request,生成response,调用ServletProcessor的方法.我们首先将逻辑分离.

HttpConnector只负责接收请求,将SocketServer调用accept方法获得的socket传递给processor实例,本次请求中HttpConnector的工作结束,接下来的任务由HttpProcessor继续

HttpProcessor总体的逻辑和之前没有大的变化,基本上就是创建Request,创建Response,解析request,解析header,判断请求的是静态资源还是动态资源,并交给相应的处理器处理.