客户端第一次请求服务器
-
服务端会产生一个session对象(用户保存该客户的信息);
-
每个session对象都会有一个唯一的sessionID(用户区分其他session);
-
服务端会又会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionID的值;
-
然后服务端会在响应客户端的同时将该cookie发送给客户端;
-
至此,客户端就有了一个cookie(JSESSIONID);
客户端的cookie和服务端的session一一对应 :
(JSESSIONID - sessionID)
**
客户端第二次/n此访问服务器
- 服务端会先用客户端cookie中的JSESSIONID 去服务端的session中匹配sessionid,
- 如果匹配成功(cookie jsessionid和sessionid ),说明此用户不是第一次访问,无需登录
总结:
第一次 客户请求时 产生一个sessionid 并复制给cookie 的jsessionid
然后 发跟踪客户端。
最终 通过session的sessionid-cookie的jsessionid
扩展
session常用方法:
getId(): //获取sessionId
bolean isNew();//判断是否是 新用户(第一次访问)
void invalitate(): //使session失效 (推出登录,注销)
setAttribute();
getAttribute();
void setMaxInactiveInterval(秒)://设置最大有效 非活动时间
int getMaxInactioveInterval(): // 获取最大有效 非活动时间
//实例
String name = (String)session.getAttribute("name");//取session
session.setAttribute("name", name);//存session