Tomcat实现session的代码逻辑分析

我们以 HttpServletRequest#getSession() 作为切入点,对 Session 的创建过程进行分析 

我们的应用程序拿到的 HttpServletRequest 是 org.apache.catalina.connector.RequestFacade(除非某些 Filter 进行了特殊处理),它是 org.apache.catalina.connector.Request 的门面模式。首先,会判断 Request 对象中是否存在 Session,如果存在并且未失效则直接返回 如果不存在 Session,则尝试根据 requestedSessionId 查找 Session,如果存在 Session 的话则直接返回,如果不存在的话,则创建新的 Session,并且把 sessionId 添加到 Cookie 中,后续的请求便会携带该 Cookie,这样便可以根据 Cookie 中的sessionId 找到原来创建的 Session了 

Tomcat实现session的代码逻辑分析