Session学习
一.什么是session?
当访问服务器否个网页的时候,会在服务器端的内存里开辟一块内存,这块内存就叫做session,而这个内存是跟浏览器关联在一起的。在计算机中,尤其是在网络应用中,Session称为“会话控制”。
二.Session的作用
在Session出现之前,为了解决多次多次Http请求的关联,如登录一个界面,在发生跳转时候,下一个界面也保持登录状态,采用了Cookie,但Cookie保持在本地,不够安全,且大小有限,因此,Session应运而生。
在Session不同于Cookie,它保存在了服务器内存中。因为HTTP是无关联的,可能在同一时间有许多人同时访问同一个页面,因此需要一个session_id来绑定一个用户。当一个用户在同一个网页中进行操作的时候,它根据传过来的信息生成session_id,并将其发送给客户端,这里默认浏览器支持使用cookie,客户端将session_id保存在cookie中,并在下次访问的时候带上session_id,这样就可以在跳转一个页面的时候,了解上个界面的数据,如上面所说的登录操作。
三.Session的应用
(注:本文具体描述在Java的web后端开发的应用)
Session的创建流程
1.首先在程序为某个客户端创建session时候,服务器首先检测是否该请求里包含sessionid。
2.若存在sessionId,表示已经创建过session,那么通过id去检索,但是因为session会在一段时间未被访问时被删除,有时候,会存在找不到session的情况,那么,在创建一个session。若请求中不包含sessionId,则创建一个与Session关联的Sessionid,并传给前端。
3.前端将该session保存起来,在下一次访问的时候,带上上一步创建的sessionId(若该id未失效)则能够访问与该id有关的session。
Session在java中的使用
1.session调用的常见函数
isNew():是否是新的Session,一般在第一次访问的时候出现
getid():拿到session,获取ID
getCreationTime():当前session创建的时间
getLastAccessedTime():最近的一次访问这个session的时间。
getRrquestedSessionid: 跟随上个网页cookies或者URL传过来的session
isRequestedSessionIdFromCookie():是否通过Cookies传过来的
isRequestedSessionIdFromURL():是否通过重写URL传过来的
isRequestedSessionIdValid():是不是有效的sessionID
2.如何从session中取值
session使用key-map形式来保存数据因此,采用session.setAttribute("token",token)来保存数据,session.getAttribute("key")来获取session中保存的数据。