1.Tomcat对request的处理过程;
- 浏览器发送请求到服务器后 tomcat中的
acceptor
线程会通过socket
接收该请求 - 服务器接收到请求后 acceptor会调用
work
方法,后者会调用Http11Protocol
去解析http - 解析HTTP后得到的数据(请求头 请求体)会被服务器封装到request对象中 即产出
request
对象 - 之后再又程序员编写的逻辑代码(
service doget dopost
方法等)进行处理 HTTP响应完后该request对象也会被销毁 request对象作用于整个请求链
2.Tomcat处理一个HTTP请求的过程;
- 使用
acceptor
线程通过里面的socket
去不断接收HTTP请求 - 接收请求后将其请求头请求体解析封装
- 处理完封装好的信息 返回相关结果给原请求 并结束本次HTTP请求
3.Tomcat创建 session 的流程;
-
应用程序拿到的
HttpServletRequest
是org.apache.catalina.connector.RequestFacade
(除非某些 Filter 进行了特殊处理),它是org.apache.catalina.connector.Request
的门面模式 -
首先,会判断
Request
对象中是否存在Session
,如果存在并且未失效则直接返回,因为在 tomcat 中Request
对象是被重复利用的,只会替换部分组件,所以会进行这步判断。 -
此时,如果不存在
Session
,则尝试根据requestedSessionId
查找Session
,而该requestedSessionId
会在 HTTP Connector 中进行赋值(如果存在的话) -
如果存在
Session
的话则直接返回,如果不存在的话,则创建新的Session
,并且把sessionId
添加到Cookie
中,后续的请求便会携带该Cookie
,这样便可以根据Cookie
中的sessionId
找到原来创建的Session
了
找到原来创建的 Session
了
[外链图片转存失败(img-BkrYnYbO-1569246757848)(C:\Users\洋\Desktop\contain.png)]