您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页Tomcat源码八:Session

Tomcat源码八:Session

来源:宝玛科技网

对象模型

StandardService
	StandardEngine
		StandardHost
			StandardContext
				manager[StandardManager]
					sessions[ConcurrentHashMap<String, Session>()]

session 属于 context,所以session作用域不跨 context, 即tomcat源码中的 sesion 不跨 examples、host-manager 等服务。
部署工程的时候,会在webapps下面生成 工程名字的文件夹,然后将工程部署到此文件夹下。
即:一个工程一个 context,各个工程之间的 session不通用。

	Adapter
		Connector
			Mapper
				Hosts
					Context
						SessionManager
							sessions[ConcurrentHashMap<String, Session>()]

首次SessionId的创建

JSESSIONID

创建Session流程 RequestFacade.getSession()

创建Session Request.getSession()

StandardManager的createSessions 方法

StandardSessionIdGenerator的 generateSessionId方法

找到请求对应的Session

如下,首先是请求的不同
第一张图片是 浏览器第一次发送请求,tomcat 读取到的数据
第二张图片是 浏览器第二次发送请求,tomcat读取到的数据,比第一次多了Cookie

我们知道这些数据都回封装到 request 中

解析cookie信息 CoyoteAdapter.postParseRequest()

解析有两处,

一个是通过 url解析 cookie。(当cookie被 浏览器禁用时,会将cookie信息重写进url)

postParseRequest

另一个是从 Cookie中解析出 sessionId,找到服务器中的Cookie


之前在FormAuthenticator 处有个 Session

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务