JavaEE--会话管理

会话管理–Cookie(客户端)

  • 为什么会出现cookie
1.WEB应用程序是基于HTTP协议
2.HTTP基于请求/响应模式
 (所有的请求都是相互独立的,无连续的)
3.HTTP是无连接的协议
 (限制每次连接只处理一次请求/响应) 
4.HTTP是无状态的协议
  (协议对于事务处理没有记忆能力)
  • 会话管理的产生
  对于需要客户端和服务器端多次交互的网络应用,则必须记住客户端状态
  • 会话管理概念
会话就是一个客户端连续不断地和服务器端进行请求/响应的一系列交互。

多次请求间建立关联的方式称为会话管理,或会话跟踪。

会话状态,指服务器与浏览器在会话过程中产生的状态信息。
  • 会话管理的产生
  1.当服务器接受客户端的首次请求时,服务器初始化一个会话并分配给该回话一个唯一标识符
  2.在以后的请求中,客户端必须将唯一标识符包含在请求中,服务器根据此标识符将请求与对应的会话联系起来
  • 会话管理:使用cookie

  • 所有的HTTP消息,不管是请求还是响应均包含头信息

1.当服务器返回响应给客户单时,Servlet容器会把绘画的信息添加到响应头信息中
2.客户端浏览器接受到响应提取头信息,并将其存储在其本地机中,以后发送请求时会自动将信息待会服务器端
  • 浏览器存储在客户端机器上的头信息称作Cookie,它以“属性名=属性值; …”方式组成文本信息

  • 创建并向客户端发送cookie,cookie的常用方法

1.创建cookie对象(调用构造方法,给出名称和值)
Cookie c=new Cookie("userName","a1234");

2.设置最大时效(单位是秒)
(如果要告诉浏览器将cookie存储在磁盘上
如果值为0,表示删除对应的cookie
如果值为负数,表示cookie只适用于当前的浏览会话
默认值为-1)
c.setMaxAge(60*60*24*7);

3.将cookie放入到HTTP响应中
response.addCookie(c);



4.调用request.getCookies
得到Cookie对象组成的数组

5.循环数组,调用每个对象的getName找到想要的cookie

6.根据应用程序调用getValue方法使用这个Cookie
  • cookie的优缺点
优点:
1.可以配置到期规则,数据可持久保存
2.不需要服务器资源,数据保存在客户端
3.简单性,基于文本的key-value对

缺点:
1.大小受到限制(总数300;20/站点;4KB/Cookie)
2.用户可禁用客户端接收Cookie功能
3.潜在的安全风险

会话管理–Session(服务器)

在Servlet中进行会话管理,可以使用HttpServletRquest的getSession()方法获取HttpSession对象(简称Session),通过设置/获取服务器端Session对象的属性,来保留请求之间的相关信息
  • 获取HttpSession对象,设置相关属性
HttpSession session = req.getSession();
session.setAttribute("userName", userName);
  • 获取HttpSession对象,取出相关属性
HttpSession session = req.getSession();
session.getAttribute("username”);
  • 通常分三个步骤/
1.获取一个与请求相关联的会话
HttpSession session = request.getSession();
2.从Session中设置或获取一个属性
session.setAttribute(“userName”,userName);
session.getAttribute(“username”);
3.根据需要关闭会话
session.invalidate();
通常客户端不提供结束会话的通知,而是Servlet容器在用户处于一段非活动期后就会自动的使会话失效——这个时间段称为会话的超时期

Session对象失效:当用户超出指定会话期时间处于非活动状态时,会话自动结束

setMaxInactiveInterval(),设置会话的超时期
通过web.xml的<session-timeout>标签设置
使用方法invalidate()
  • session的方法
1.getAttribute()
从会话对象中提取出一个之前存储的属性值
如果没有找到与名称相关联的值,则返回null

2.setAttribute()
设置会话对象的属性名称和属性值

3.removeAttribute()
移除与名称关联的值

4.getAttributeNames()
返回会话中所有属性的名称

5.getId()
返回唯一的标识符

7.isNew()
确定会话对于客户来说是否为新创建

8.getCreationTime()
返回会话创建的时间

9.getLastAccessedTime()
返回客户端最近一次发送请求的时间

10.getMaxInactiveInterval()、setMaxInactiveInterval()
取得或设置会话的超时期

11.invalidate()
废弃当前的会话


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值