《Session会话追踪的实现机制》

1.会话:

概念:客户端打开与服务器的连接发出请求到服务器响应客户端请求的全过程。

2.会话追踪:

HTTP协议是一种无状态协议,即Web应用程序无法区分收到的两个HTTP请求是否是同一个浏览器发出来的,为了跟踪用户状态,服务器可以向浏览器分配一个唯一ID,并以Cookie的形式发送给浏览器,浏览器在后续访问时总是附带此Cookie,这样,服务器就可以识别用户身份。

3.会话追踪常见的方法:

(1)Session

Session技术把用户的数据写到用户独占的session中。就是说每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的。

Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。

 

获取HttpSession后,常见的操作方法有:

void setAttribute(String name,Object value):将指定key-value键值对,存在当前Session会话中。

 Objec getAttribute(String name):按照指定的key从当前Session会话中获取value,返回值为Object类型的对象,如果不存在,则返回null.

void removeAttribute(String name):按照指定的key从当前Session会话中删除Key-Value键值对.

long getCreationTime():获取当前Session会话的创建时间。

long getLastAccessedTime():获取当前Session会话最后一次请求的访问时间。

String getId():获取当前Session会话的SESSION ID。

服务器识别Session的关键就是依靠一个名为JESSIONID的Cookie.在Servlet中第一次调用req.getSession()时,Servlet容器自动创建一个Session ID,然后通过一个名为JSESSIONID的Cookie发送给浏览器。

 

使用Session时,由于服务器把所有用户的Session都存储在内存中,如果遇到内存不足的情况,就需要把部分不活动的Session序列化到磁盘上,这样会大大降低服务器的运行效率,因此,放入Session的数据不能太大,否则会影响服务器的运行。 

 

 (2)Cookie

Cookie是把用户的数据写给用户的浏览器,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。另外,cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB,因此使用cookie只能存储一些小量的数据。

 

 

 (3)隐藏表单域

将会话ID添加到HTML表单元素中提交到服务器,此表单元素并不会在客户端显示。

代码格式:<input name="loginAccount" value="123">

这里的域名为loginAccount,值为123;

递交表单<form action=xxx>到页面xxx;

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值