Session是通过Cookie来传id的

转载 2016年08月30日 21:51:41

1、HttpSession session = request.getSession();

根据情况当这句代码需要创建session的时候,服务器每创建一个session都会有一个想对应的session_id,并且服务器会把这个session_id号,会以Cookie的形式

回写给客户端(浏览器),下次同一个用户访问的时候会带这个session_id号过来的。

这样有时候就会出现一个问题,当你把客户端(浏览器)关闭的时候,如果不小心关闭了浏览器,那么Cookie就不存在了。

例如常见的购物车功能,在购物的时候,不小心关闭了浏览器,该用户下次再来访问的时候,上次的记录就不存在了,

所以当session创建的时候,可以把对应创建的session_id存到一个设置有效期的的Cookie当中,那么在你关闭浏览器的时候,在较短时间内,再次打开浏览器,上次的浏览

记录依然还是在的:

通过以下代码可以去实现:

  HttpSession session = request.getSession();
  session.setAttribute("String1", "Object1");
  String session_id = session.getId();
  Cookie cookie = new Cookie("JSESSIONID", session_id);//session_id默认是存放在一个name为JSESSIOINID里面的
  cookie.setPath("上次路径");
  cookie.setMaxAge(30 * 60);// 30 分钟
  response.addCookie(cookie);

2、这里又有了另外一个问题,为什么我上面这段代码设置了Cookie的生命周期,再次打开浏览器的时候,这个Cookie还在呢;而当你创建session并且默认以Cookie的形式

回写给客户端的时候,不小心关闭了浏览器,再次打开的时候Cookie却不存在了?

这里我在网上查阅下关于Cookie的一个生命周期的问题:

Cookie如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。

如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器还有不同的处理方式。

保存session id的几种方式

保存session id的几种方式:  A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。 Servlet 容器将 Session...
  • JJ_nan
  • JJ_nan
  • 2017年05月07日 20:13
  • 1658

Session是通过利用设置在Cookie中的id来区分访问的用户

Session是通过什么区分每一个用户的 参照了网上内容 整合 部分修改
  • S_clifftop
  • S_clifftop
  • 2017年06月03日 20:02
  • 993

Session是怎么实现的?存储在哪里?

目录目录 前言 为什么有session 如何实现session的共享 SESSION 的数据保存在哪里呢 PHP中的session存储 Java中的session存储 博主注前言  文章内容转载或摘录...
  • qq_15096707
  • qq_15096707
  • 2017年06月30日 21:20
  • 11013

保存SessionID的几种方式

1 保存session ID 的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器 2 由于cookie可以被人为的禁止,必须有其他机制在cookie被禁止时依然...
  • alber_twhite
  • alber_twhite
  • 2014年10月30日 18:48
  • 4741

java使用cookie和session

当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接,请求的相关数据将不再存在,这样明显有不好的地方。cookie和session解决了这一问题,客户端(一般是浏览器)与...
  • u012385190
  • u012385190
  • 2016年07月19日 17:22
  • 5416

Session是通过利用设置在Cookie中的id来区分访问的用户

Session是通过什么区分每一个用户的 参照了网上内容 整合 部分修改
  • S_clifftop
  • S_clifftop
  • 2017年06月03日 20:02
  • 993

保存session id的几种方式

保存session id的几种方式:  A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。 Servlet 容器将 Session...
  • JJ_nan
  • JJ_nan
  • 2017年05月07日 20:13
  • 1658

看完就彻底懂了session和cookie

ttp 之session和cookie 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击...
  • qq_30513483
  • qq_30513483
  • 2016年07月09日 16:51
  • 8197

面试二 session和cookie都存放什么数据

 session和cookie都存放什么数据?
  • tangliuqing
  • tangliuqing
  • 2014年07月12日 22:55
  • 2487

SESSION是否依赖COOKIE问题总结

Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但为什么禁用Cookie就不能得到Session...
  • CNYYGJ
  • CNYYGJ
  • 2016年12月01日 00:21
  • 1322
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Session是通过Cookie来传id的
举报原因:
原因补充:

(最多只允许输入30个字)