tomcat处理请求过程

本文详细介绍了Tomcat处理HTTP请求的步骤,包括从浏览器发起请求到Tomcat接收并封装成request对象,再到程序员逻辑处理及响应。同时,文章还探讨了Tomcat创建session的流程,涉及session的查找、复用以及如何通过cookie在后续请求中保持session状态。

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 的流程;

  • 应用程序拿到的 HttpServletRequestorg.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)]

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值