Session

Session

Session在网络应用中被称为会话控制,是服务器为保存用户状态而创建的一个特殊的对象

我们在浏览购物网站时,并没有进行登录,但我们仍然可以将商品放入购物车,并进行查看。我们退出浏览器之后再打开浏览器进行查看时,购物车中依然有我们选择的商品,应该如何实现?

当然,我们也可以选择使用Cookie,但是Cookie没办法存储大量数据。Session则可以解决这个问题。Session是存储在服务端的特殊对象,服务器会为每一个客户端创建一个唯一的Session。Session在服务器端共享,每个客户端是独享的,我们可以在Session存储数据,实现数据共享

Session的存储形式

Session类似于一个Map,里面可以存放多个键值对,是以key-value进行存放的。key必须是一个字符串,value是一个对象

Session的底层实现机制

\[ Client\sim Cookie\sim JSESSIONID\sim Session \]

如此便对应起来,一个Client在服务器上有一个对应的Session。这个名为JSESSIONID的Cookie会被缓存在浏览器中

如果浏览器被关闭,服务器不会销毁对应的Session对象。因为B/S架构的系统是基于HTTP协议,而HTTP协议是一种无连接/无状态的协议。Web系统中引入了Session超时的概念,当很长一段时间(这个时间可以配置)没有用户访问Session对象后,此Session对象超时,被回收