浏览器和 Session 之间关联的技术
作者:互联网
浏览器和 Session 之间关联的技术
Session 技术,底层其实是基于 Cookie 技术来实现的
一、cookie与session都是可以用来保存信息,存储数据的。cookie是在客户端保存的(如浏览器),而session是在服务端保存的(如tomcat)。session是会话级别的(在一个会话期间,session里面的数据都不会消失)
二、cookie和session的关联技术
通过cookie可以关联session,服务端创建的每一个session都是存储在服务端内存中的,服务器的内存可能会有多个session,并且每一个session都会有一个sessionId,每一次新建一个session都会通过增加一个请求头的方法创建一个cookie来保存sessionId。客户端每次向服务器发起请求都会带上cookie,服务端可以通过cookie携带的sessionId来找到对应的session,从而获取session里面的数据。(每一个cookie都有自己的有效路径,通过设置自己的有效路径可以决定在发送哪些请求时可以带上该cookie,默认是本身的webapp实例)
所以我们首次登陆一个账号,一般会生成一个或多个唯一的cookie来保存该账号对该网站的会话信息(cookie保存sessionId,sessionId指向一个唯一的session,session保存会话信息)
但是当浏览器禁用cookie后,浏览器也就没有办法通过cookie来传递sessionId了(此时session还在,只是客户端没有携带sessionId从而无法找到对应的session,解决的办法是通过url重写,把sessionId参数携带在url中,连同url一起发送给服务器即可)
另:当调用request.geSession()方法时,首先会根据客户端传递的cookie保存的sessionId来寻找对应的session,当找不到sessionId对应的session或者没有携带sessionId时,就会自动创建一个session对象并把生成的sessionId通过客户端用cookie保存起来(客户端的cookie保存sessionId所用的key是JSESSIONID)
具体原理如图:
标签:浏览器,Session,保存,关联,sessionId,session,cookie,客户端 来源: https://www.cnblogs.com/yxgxixi/p/16185598.html