javaWeb之--session

1.session简介
1.Session技术是将数据存储在服务器端的技术
2.会为每个客户端都创建一块内存空间存储客户的数据
3.客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间
4.Session需要借助于Cookie存储客户的唯一性标识SESSIONID
2.Session如何办到在一个servlet当中存数据,在别的servlet当中取出当初存储的数据
1.每一个用户访问服务器时,会给该用户分配他自己对应的存储空间
2.并且创建的存储空间有一个编号我们称为SessionID
3.第一次访问时, 会把对应的sessionID以Cookie的形式写给浏览器
4.下次再访问时, 会携带sessionID,找到当初创建的那个存储空间
5.在对应的存储空间当中取出数据
3.具体的结构流程如下图

在这里插入图片描述

4.如何获取Session对象
1.获得专属于当前会话的Session对象
HttpSession session = request.getSession();

2.如果服务器端没有该会话的Session对象,会创建一个新的Session返回
如果已经有了属于该会话的Session直接将已有的Session返回

3.本质就是根据SESSIONID判断该客户端是否在服务器上已经存在session了
5.向session当中存取数据
Session对象也是一个域对象:
	1.存数据:
	session.setAttribute(String name,Object obj);
	2.取数据
	session.getAttribute(String name);
	3.移除数据
	session.removeAttribute(String name);
	
已经学习的其它两个域对象
	servletContext域 //生命周期的服务器启动到服务器停止
	request域	//生命周期是一次的请求过程
6.session的生命周期
创建: 第一次执行request.getSession()时创建
销毁:
	1.服务器关闭时
	2.session过期/失效(默认30分钟)是从最后一次操作结束时计时
	3.手动销毁  session.invadate
	4.浏览器关闭,session就销毁,这句话是不正确的,
	//虽然在访问的过程中,我们关掉浏览器,第一次创建的sessionID会变没了,这不是销毁,而是服务器在把session ID传向浏览器的时候是以cookies的形式传过去,cookies是以会话为基础,会话是打开浏览器和关闭浏览器为一次会话,所以就会导致session ID不见得、的原因
	
作用范围:
	默认在一次会话中,也就是说在,一次会话中任何资源公用一个session对象
7.JsessioID持久化
1.默认情况下,第一次获取session对象时, 会帮你创建一个session,可以获取该Session的ID,会自动的把id写到cookie当中
2.session ID存在的问题;
	1.第一次访问sevlet1时存储一些数据,在第二个servlet当中直接取数据,可以直接取到
	2.当把浏览器关掉的时候:
		直接到第二个servlet当中取数据,发现取不到数据了。
		原因:因为访问的时候要求带着jsessionID.由于默认情况下,存储cookie是会话级别的,关闭浏览器,就没有了。所以再次打开浏览器。访问资源时,没有jsessionID.  就会创建一个新的session.  就取不到数据了
		解决办法:
			1.在写数据时,自己手动去把sessionID写到cookie当中
			2.写的时候,设置持久化时间
			3.注意,key值一定是和它自动生成的key值是一样的
			

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值