session运行机制
1.浏览网站时:从开始到关闭为一次会话
2.购物时:从浏览到付款再到退出为一次会话
3.发电子邮件时:从浏览、写邮件到退出为一次会话
SESSION机制
1.
客户端第一次请求服务端时,服务端会产生一个session对象(用于保存该客户的信息);并且每个session对象,都会有一个唯一的sessionId(用于区分其他session);
2.
服务端都会产生一个cookie,并且该cookie的name = JSESSIONID,value=服务端sessionId的值;然后服务端会在响应客户端的同时将该cookie发送给客户端,至此,客户端就有了一个cookie(JSESSIONID);
因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID -- sessionID)
SESSION后续
例子:
客户端:顾客(客户端)
服务端:存包处-商场(服务端)
顾客第一次存包:商场判断此人是之前已经存过包(通过你手里是否有钥匙🔑)
如果你是新顾客(没钥匙),分配一个钥匙给该顾客;钥匙会与柜子一一对应;
不是第一次存包,商场(通过你手里是否有钥匙)判断此人是之前已经存过包,如果你是有钥匙的老顾客,则不需要分配;该顾客手里的钥匙会和柜子自动一一对应。
3.session的特点
3.1.session存储在服务端
3.2.session 是在同一用户(客户)请求时共享
3.3.实现机制:第一次客户请求时产生一个sessionid并复制给cookie的jsessionid,然后发给客户端。
最终通过session的sessionid和cookie的jsessionid实现一一对应的关系。
4.session的方法
String getId() 获取sessionId
boolean isNew() 判断是否是新用户(第一次访问)
void invalidate() 使session失效(当用户退出登录或者注销时)
void setAttribute()
Object getAttribute()
void setMaxInactiveInterval(秒) :设置最大有效非活动时间
int getMaxInactiveInterval() :获取最大有效非活动时间
当一种浏览器拿到用户session值的时候,再打开这个浏览器任一个标签,都可以拿到这个session值。以及相应的用户数据。
如图,我们在login.jsp登录zs 这个用户之后,再来到同目录下的b.jsp
利用拿到session为uname的信息
<body> <%=session.getAttribute("uname")%> </body>