Session因何而来
在聊Session之前,先来浅谈一下HTTP,学习计算的童鞋都知道HTTP,然而HTTP是无状态的,什么是无状态呢?大体就是这一次请求和上一次请求以及下一次请求没有任何联系,互不认识,这样有个好处是速度快。但是我们有时候我们需要多个请求页面之间有数据关联,那么就需要一个安全又可靠的全局存储信息的容器,Session就诞生了!
先大体说一下,Session为什么安全可靠哈,因为Session的信息存储在服务器端,在前端浏览器无法进行改动。
Session是什么
当浏览器访问服务器时,在服务器端会开辟一个空间,这个对象就是Session,存储结构为ConcurrentHashMap。
Session在哪个地方
Session是一种服务区存储数据的方式,它是存在于服务器的临时目录下
Session的运行机制
Session的全部机制保存在Session_id中,是Session的唯一标识,因为Session每天要被很多人访问成千上万次,那么同一个人的访问数据就全部存放在一个Session_id中,这样就能很快的找到某个人多次请求下访问的全部数据了,就解决了在HTTP状态下请求之间无关联的问题。
Session的生命周期
Session在浏览器第一次访问服务器时被创建,需要注意的是只有在访问JSP、Servlet程序时才会创建Session,当访问静态页面时不会主动创建,可调用request.getSession(true)强制生成Session,服务器会把长时间没有活动的Session给清除掉
Session需要浏览器的支持
Cookie产生于服务器端,存放于浏览器中,Session产生于服务器端,Session的session_id存放在Cookie中,Session依据Cookie中的session_id来识别是否为同一个用户
Session到底解决了什么问题
弥补了HTTP每个请求之间无关联的弊端,减轻了数据库访问的压力
用户多次访问的数据都存放在了Session中,当用户再需要数据直接在session中获取,减少了对数据库的访问次数