首页 > 技术文章 > Cookie与Session到底怎么理解

zxg-blog 2020-06-11 21:19 原文

突然感觉对这个熟悉又陌生的东西不是很理解,于是查了半天资料,发现都是定义说一通,用法场景说一通,都没有说明白,他俩是怎么一回事。

还得自己想办法。我就不说定义一类的了,多余。

1、首先要对他们的结构有所认识,Cookie:

可以看到是以分号隔开的key:value形式的数据 。由此得知,客户端Cookie是一个数组类型的对象。

2、服务端获取浏览器传过来的Cookie:

HttpServletRequest req=ServletActionContext.getRequest();

    Cookie[] cookies=req.getCookies();
3、客户端的Cookie内容是由服务端返回的,内容可加可减
HttpServletResponse res=ServletActionContext.getResponse();
    Cookie cookie=new Cookie("xdx", "i'm xdx");
    res.addCookie(cookie);
4、session的作用是把项目当中一些常用的信息存在内存当中,这些常用的信息通常是跟用户相关的,比如用户名,用户昵称,用户角色等,同时session本身会有一个id,类似于表中的主键id,这个很关键。
5、session和cookie到底有什么关系呢?
每一个session对象都有一个sessionId,而在cookie数组中,又一个元素叫做JSESSIONID,服务器将session对象的sessionId,以名称叫做JSESSIONID,值为sessionId的形式存入cookie数组中,这样cookie和session就发生了关联。
6、应用:第一次请求服务端,验证用户信息,成功后,将用户名等常用信息保存在session中,同时新增一个Cookie返回至浏览器,下次再访问时,服务器取到JSESSIONID然后和服务端中进行比对,比对成功则通过,没有取到,则说明未登录,需要重新登录。

推荐阅读