`

接收的到的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;

分享到:
评论

相关推荐

    分析Tomcat的工作原理

    Adapter作为适配器,将Tomcat的Request和Response对象转换为标准的ServletRequest和ServletResponse,供容器处理。 容器部分的核心是Catalina框架,其层次结构包括Engine、Host、Context和Wrapper。Engine是顶级...

    mytomcat.zip

    6. **Request/Response**:Tomcat会将接收到的HTTP请求封装为ServletRequest对象,并将处理结果封装为ServletResponse对象,传递给Servlet进行处理。在手写Tomcat中,你需要理解这两个对象的生命周期以及如何在它们...

    tomcat源码解析

    一旦接收到客户端连接请求,ServerSocket就会创建一个新的Socket对象,并将该对象传递给服务器处理逻辑。 ##### 应用举例 下面是一个简单的基于Socket的Web服务器示例: ```java import java.io.*; import java...

    how tomcat workd tomcat工作原理

    连接器(Connector)负责监听特定端口上的TCP连接请求,并将接收到的HTTP请求转换成Tomcat内部能够处理的对象。这一转换过程通常涉及到解析HTTP请求报文,创建符合 javax.servlet.ServletRequest 接口的request对象...

    过滤器例子

    它接收ServletRequest和ServletResponse对象,以及FilterChain对象。FilterChain对象允许我们继续调用下一个过滤器或者直接将请求传递给目标资源。 2. **init()** 方法:在Servlet容器启动并加载过滤器时调用,可以...

    Servlet-API+JDK_API_1_6_zh_CN.zip

    而JDK API则涵盖了Java编程的各个方面,从基本类型操作到高级功能,如并发控制、数据库连接、加密等。通过深入学习这两个API,开发者可以更好地掌握Java服务器端编程,提升开发效率和代码质量。因此,这个压缩包对于...

    微信小程序 websocket 实现SpringMVC+Spring+Mybatis

    在微信小程序端,你需要使用wx.connectSocket方法来建立WebSocket连接,并通过onSocketOpen、onSocketMessage、onSocketClose等事件监听器来处理连接的建立、消息的接收和断开等状态。同时,使用wx....

Global site tag (gtag.js) - Google Analytics