理解session

  学JavaWeb刚接触Seesion时不是很理解Session的作用,下面说一下自己的理解,如果有不对的地方希望各位大牛指正,本人小白一枚只是记录自己学习和成长过程。

  HTTP请求Web服务器是基于请求/响应模式不会记录请求状态,是一种无状态,qq的在线离线是一种状态,意味着Web服务器不会记录这个请求是那次请求,每次请求对于Web服务器来说是一个新的请求,这往往违背我们的需求,因为需用状态标识这次请求与上次请求是不是同一个用户,Seesion愿意为一系列有始有终的动作,理解从起点开始发生一系列动作至终点结束,在计算机领域理解为会话,当Web客户端往Web服务器发生一个HTTP(知识很深,简单的说就是一种协议,协议干什么用呢?起到约束作用,大家一起遵守约定就可以互相通信,推荐大家一本《HTTP协议指南》)请求时,这是会话的开始,当Web服务器接收到这个请求时就会产生一个SessionId来标识这次请求,当Web服务器响应请求信息时给带上这个SessionId给Web客户端,当这个Web客户端在发生下次请求时,服务器会判断这个请求里是否有SessionId,如果有会把这次请求放在上次请求建立好的会话中,会话过程中数据是共享的,JSP提供一个内置对象Session来访问会话中的信息,同时Seesion也可以把数据绑定到这次会话中,数据在Web服务器端是以哈希表结构Key-Value存储。Seesion提供以下常见方法来访问会话

1.String getId()获得Web服务器端返回的SessionId(很复杂的字符串),存储在Web客户端的cookie中

2.void invlidate()设置Session失效,如果Session失效,往往用在用户注销,Session里存放的数据清零。如果之前绑定用户,就需要重新登录。

3.void setAttribute(String key,Object obj)把数据绑定到会话

4.Object getAttribute(String key)通过key得到会话中的value

5.void RemoveAttribute(String key)移除会话中指定的value,但是会话依然存在并有效,与invlidate不同(会话关闭)

6.void setMaxInactiveInterval(int interval)设定Seesion最大非活动时间单位s


生活中实例比喻Session

A给B打电话,A拨B号码(请求),B接通后通话(响应),相互交谈,A — B整个过程就是一个会话机制。

 

你可能感兴趣的:(JavaWeb,Session)