编码:session

浏览网站:开始—》关闭=一次会话

购物:浏览——》付款——》退出

机制:

客户端第一次请求客户端时,服务端会产生一个session对象(用于保存该客户的信息);

并且每个session对象都会有一个唯一的sessionId(用于区分其他session);

服务端又会产生一个cookie,并且该cookie的name=JSEESIONID,value=服务端sessionId的值;

然后,服务端会在响应客户端的同时,将改cookie发送给客户端,至此客户端就有了一个cookie(JSESSIONID)

当客户端后来再请求服务端时,(jsessionid——sessionid)服务端根据客户端中的JSEESION去服务端的sessionid中匹配,如果匹配成功(cookie,sessionid和JSEESIONID),说明此用户不是第一次访问,无需在登陆。

例如:

租客:(客户端)      房间 和 房东(服务端)

租客第一次入住:房东判断一个人是不是这里的租客(根据他能否用钥匙进房间)。

如果是新租客(没钥匙,且已交定金),房东给租客一条钥匙;房间——钥匙    对应

当顾客第二次入住时,由于他是已经有钥匙了,所以房东不用再给他钥匙。租客的钥匙 和 房子对应

ps:假如钥匙丢了(客户端清缓存或清cookie),则需要重新发钥匙(重新匹配)

session:

a、存储在服务端

b、在同一个用户请求时共享

c、实现机制

session方法:

String getId():获取sessionId

boolean isNew():判断是否是新用户(第一次访问)

void invalidate():使session失效(退出,注销)

 用法:session.invalidate();

setAttribute()

getAttribute():

void setMaxInactiveInterval(秒):设置最大有效时间(无操作时间)

int getMaxInactiveInterval():获取静止时间

示例:登录

 

 

所谓禁止时间,即在页面无操作

 

 流程:在login页面填写资料,然后check页面检查是否uname=“lww” 学号“12345”,如果是则跳到welcome页面,如果不是则跳回login页面重新填写。

而登录成功后,由于设置了禁止时间,所以过了60秒后,再次直接访问welcome则需重新登录。

报错:如果直接在地址栏访问check页面会出现错误

原因:request只在同一次请求有效,由于“直接在地址栏访问check页面”属于第二次请求,获取不了数据(空指针)。如果按F5,则正常访问(浏览器会重新执行之前的动作,相当于重新一次请求)

同一个浏览器可以多个页面获取uname(共享)

 cookie和session的区别

 

 

 

原文地址:https://www.cnblogs.com/mi-9/p/wen.html