背景:

浏览器无法访问主机的文件系统,要想存储数据就得通过其他方式,Cookie和Session就是一种方式。

1.cookie

浏览器存储数据的一种机制,是http请求中的一个属性,是以键值对的方式来进行存储的(具体形式,程序员自定义),通过里面存储的是sessionId(服务器生成的)。

2.session

服务器存储数据的一种机制,不是持久化存储(因为存储在内存中)。

(1)机制

服务器这边想要存储数据时,就可以通过getSession方法(HttpSession类中提供的方法,可以传入参数,如果为true,则代表没有session就创建一个;如果为false,则代表没有session就是没有)来创建出session,同时还会自动创建出一个sessionId,session和sessionId形成类似于键值对的映射关系(hash表来存储这个映射关系),也就是通过sessionId就可以找到对应的session,然后session里面又是以键值对的形式来进行存储数据的(eg:username:zhangsan,id:1),所以获得sessionId就可以找到对应的session,然后就可以获得session中的设置的属性的值。

而sessionId会自动在服务器返回响应是放在响应报头的Set-Cookie字段中,从而下一次想要获取session(HTTP请求也会自动的把这个字段放在请求报头的Cookie字段中)的时候,就可以获取session中的值/查看是否存在对应的session(这种情况适用于强制登录场景)。

eg:强制登录

第一次登录(输入用户名,密码),服务器进行校验,然后创建session,将用户名保存在session中,返回响应(自动生成的sessionId放在Set-Cookie字段中)给客户端,客户端成功登录,下一次再次登录的时候,就可以拿着这个sessionId(放在HTTP请求报头的Cookie字段中)去服务器中找有没有session,没有就代表没有登录,此时强制跳转到登录页面;有就代表已经登录,不需要在进行登录了。这个服务器中存储的session可以设置过期时间,时间一到,就可以将session清除,然后此时进行访问相同网站的时候就需要登录了。(Cookie也是如此,设置过期时间,时间一到清除里面的sessionId,下一次访问的时候就需要进行登录了)

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部