session学习
Posted yamiya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了session学习相关的知识,希望对你有一定的参考价值。
session的意思就是会话,这里和cookie一样也是一种会话跟踪技术,与cookie存放在本地不同session是存放在服务器当中的。
1)seesion可以跨请求,HttpSession当中具有三个方法,对session当中的数据进行操作。
增加:session.setAttribute
读取:session.getAttribute
删除:session.removeAttribute
对于request.getSession();方法,如果没有session则会自动创建session,可以通过设置request.getSession(false);来只读不建。
2)一个会话对应一个session,工作原理:
①写入session列表
服务器对session是以map的形式管理的,这个map被称为session列表。该map的key是一个32位长度的随机串,被称为JSessionID,value则是session对象的引用(存在于堆当中)。
当用户第一次提交请求时,服务器执行到request.getSession()方法后会自动生成一个Map.Entry对象,key为根据算法形成的JSessionID,value则是新创建的session对象。
②服务器生产并发送cookie
将seesion信息写入session列表后,系统还会将"JSessionID"作为name,JSessionID的值作为value,以cookie的形式存放到响应头中,发送到客户端。
③客户端接收并发送cookie
客户端接收到这个cookie之后将其存放到缓存当中,当用户提交第二次请求时,会将缓存当中的这个cookie随着请求头,一起发送到服务器。
④从session列表中查询
服务端从请求中读取到客户端发送来的cookie,并根据JSessionID的值从session列表中查询相应key对应的session对象,再去session域属性进行读写操作。
3)session的失效
可以设置session的失效时间,应用于在某个网页长时间没有操作会弹出重新登录等。
session的失效标志着会话的结束。对于用户来说关闭浏览器标志着会话的结束,但是session的失效才标志着会话的结束。
以上是关于session学习的主要内容,如果未能解决你的问题,请参考以下文章