接收的到的Socket请求怎么转换成servletRequest

前面 ,我们已经知道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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值