前面 ,我们已经知道Tomcat怎么抓住从客户端传过来的请求,那么接下来就来看看,客户端传过来的
请求(Socket)怎么一步步包装成servletReqest , 以及如何调用相应servlet。
Http11Process :
processer.process(socket); --- coyote.Request
coyoteAdapter.service(request , response) ; -- - connector.Request
这一部分就不贴源码了,太多了== 。
下面这些 来自 : http://www.uml.org.cn/j2ee/201306285.asp
用户的一个请求会经过n个环节的处理,最后到达开发人员写的Servlet,传给Servlet也就是HttpServletRequest和HttpServletResponse,因此可以认为这一路走下来无非就是把最原始的Socket包装成Servlet里用到的HttpServletRequest和HttpServletResponse,只不过每个环节完成的包装功能和部分不一样而已,信息流如下图所示:

Request与Response的类图如下所示

Socket 先是被包装成coyote.Request
下面结合一次完整请求的时序图来看看从Socket到org.apache.catalina.connector.Request的加工过程:
coyoteAdapter : org.apache.catalina.connector;

在StanardWrappervalue中,就会形成一条过滤器链,然后通过调用diFiltere()方法,直到调用到servlet
更加详细的过程可以参考上传的文件!!!来自Tomcat自带的docs
接下来,想深入的研究下pipeline 和 value;
本文详细解析了Tomcat中客户端请求如何逐步转化为servletRequest及servlet调用过程。介绍了Socket到HttpServletRequest和HttpServletResponse的转换步骤,重点分析了coyote.Request及connector.Request的作用。
2024

被折叠的 条评论
为什么被折叠?



