Session讲解

session原理讲解

在这里插入图片描述

  1. 在第一次获取session的时候,服务器会自动在内存中创建一个session对象,并把session的id即JSESSIONID通过cookie的形式返回给客户端
  2. 客户端在后续访问的时候,都会带着该cookie即JSESSIONID,来访问服务端,服务端根据该id找到对应的session对象,以此来保证一次会话内的多次请求找的都是同一个session

第一次响应,在响应头中可以看到:
在这里插入图片描述
在后续的访问中,都会带着该Cookie
在这里插入图片描述

session的使用
  1. 获取HttpSession对象:
	HttpSession session = request.getSession();
  1. 使用HttpSession对象
	//获得值
	Object getAttribute(String name);
	//放入值
	void setAttribute(String name,Object value);
	//删除值
	void removeAttribute(String name);
当客户端关闭后,服务端不关闭,两次获取的session是否为同一个?

  默认情况下,不是同一个,但是我们刚才已经讲过了session的原理,session是基于cookie实现的,所以我们可以给cookie设置存活时间,让该cookie持久化到硬盘上,那么即使关闭浏览器,session也会是同一个

//1.获取session
HttpSession session = request.getSession();
//为特定的cookie设置存活时间为1小时
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);
客户端不关闭,服务器关闭后,两次获取的session是同一个吗

  默认不是同一个,但是Tomcat提供了钝化活化的机制,该机制可以保证session的信息不会丢失,该机制的思想非常简单,就是在服务器关闭之前,把session对象序列化到硬盘上,重新打开服务器的时候,再通过反序列化读入内存,该机制序列化的目录是work

session失效时间
  1. 如果显示的调用方法invalidate(),或者关闭服务器,则session对象会被销毁
  2. 如果没有显示的关闭,那么session的默认失效时间是30分钟
  3. 可以配置session的默认时间
    该配置文件再Tomcat的conf目录下,配置web.xml文件的标签:
    在这里插入图片描述
    或者再项目中的web.xml文件中覆盖掉该标签
Session的特点
  1. session用于存储一次会话的多次请求数据,存在服务器端
  2. session可以存储任意类型,任意大小的数据
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值