1:tomcat从缓中区中解析 请求行,请求头。封装成request对象,一步步到达指定的servlet.
2:servlet从request中的到数据,进行处理。处理完后。给客户端响应
3:响应,需要把数据传给操作系统的一个sendBuf(数据池),数据池再把数据通过socket连接响应给客户端
4:响应并不直接把数据发送给sendbuf,它先把数据传输给tomcat缓冲区中。缓冲区再把数据传输给sendbuf
分析:如果响应直接把数据传输到sendbuf,如果数据传输过程中sendbuf满了,但是传输还没结束。那么此write,就会被阻塞
5:tomcat有两个缓冲区,第二个缓冲区 socketBuffer可以设置是否使用
6:响应数据传输到缓冲区中,如果缓冲区目前还没有满,数据是不会,向下一级缓冲区、或者客户端发送。调用flush刷新,强制把缓冲区中的数据,响应到客户端。同时flush带有想要个头的信息。close也带有响应头的信息
7:调用输入流或者输出流,需要调用close进行关闭。这样就减少jvm的垃圾回收进行处理。