session与cookie的学习笔记

此文记录session与cookie学习笔记,后续温新继续添加。

1.1    Session与cookie

基本要点:

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

此外,看到一帖子回答说要区分session与session的区别。文中写到

本来 session 是一个抽象概念,开发者为了实现中断和继续等操作,将 user agent 和 server 之间一对一的交互,抽象为“会话”,进而衍生出“会话状态”,也就是 session 的概念。

而 cookie 是一个实际存在的东西,http 协议中定义在 header 中的字段。可以认为是 session 的一种后端无状态实现。而我们今天常说的“session”,是为了绕开 cookie 的各种限制,通常借助 cookie 本身和后端存储实现的,一种更高级的会话状态实现。所以 cookie 和 session,你可以认为是同一层次的概念,也可以认为是不同层次的概念。具体到实现,session 因为 session id 的存在,通常要借助 cookie 实现,但这并非必要,只能说是通用性较好的一种实现方案。

1.2    Session

1.2.1  Session创建时间

server端程序调用HttpServletRequest.getSession(true)时才被创建

1.2.2  Session销毁时间

1)Session超时:超时指的是连续一定时间服务器没有收到该Session所对应客户端的请求,并且这个时间超过了服务器设置的Session超时的最大时间。

2)程序调用HttpSession.invalidate()

3)服务器关闭或服务停止

因此session不会因为浏览器关闭而销毁;

1.2.3  Session的id产生

HttpSession session = request.getSession(),不只是创建一个会话,而是会完成所有与cookie相关的工作,只是容器都自动帮我们实现了。我们来看看容器在背后默默为我们做了什么:

l  建立新的httpsession对象

l  生成唯一的会话ID

l  建立新的会话对象

l  把会话ID与cookie关联

l  在响应中设置cookie



猜你喜欢

转载自blog.csdn.net/huaixiaozi90/article/details/79439590