Session

13 篇文章 1 订阅
8 篇文章 0 订阅
本文详细介绍了HTTP会话技术中的Session概念,包括其工作原理、常用API以及何时会被销毁。Session用于在服务器端保持状态,依赖于cookie存储sessionid。当服务器关闭或超过预设的30分钟无操作时,Session会被销毁。可通过setMaxInactiveInterval方法调整Session的有效时间。此外,通过管理cookie可以实现浏览器关闭后Session的持久化。
摘要由CSDN通过智能技术生成

1、Session是什么?

服务器端会话技术,在一次会话的多次请求中共享数据,数据存放在服务器的内存中。

  (浏览器从打开到关闭是一次会话)

2、基本介绍

session机制采用的是在服务器端保持 HTTP 状态信息的方案。为了加速session的读取和存储,web服务器中会开辟一块内存用来保存服务器端所有的session,每个session都会有一个唯一标识sessionid,根据客户端传过来的jsessionid(cookie中),找到对应的服务器端的session。为了防止服务器端的session过多导致内存溢出,web服务器默认会给每个session设置一个有效期,      (30分钟)若有效期内客户端没有访问过该session,服务器就认为该客户端已离线并删除该session。

原理:依赖cookie,存储jsssionid

在这里插入图片描述

session会在cookie中储存一个Jsessionid的东西来标识每个用户然后会在本地生成对应ID的文件来储存相应的值,与cookie相比多了不少安全性

3、常用API

1、getid()方法:得到sessionid.

2、invalidate()方法:让session立刻失效。

3、getAttribute(String key):根据key获取该session中的value。

4、setAttribute(String key,Object value):往session中存放key-value。

5、removeAttribute(Stringkey):根据key删除session中的key-value。

6、getServletContext():得到ServletContext。

7、setMaxInactiveInterval(long timeout)/getMaxInactiveInterval:设置/获取session的最大有效时间。

8、getCreationTime方法:获取session的创建的时间。

9、getLastAccessedTime方法:获取session最后一次访问的时间。

10、getSession():从HttpServletRequest中获取session。

4、Session什么情况会销毁

Session在服务器关闭

1、当服务器关闭(正常关闭和启动服务器,不能直接关闭虚拟机) , 两次获得的 session 对象还是同一个, tomcat 帮我们做了 session 的钝化处理(将服务器内存中的 session 对象序列化到了外存中,见下图),

  当服务器重启后又进行了session对象活化(又读入了内存)

2、Session默认失效时间30分钟

  在工程中web.xml中修改存活时间

  <session-config>

  <session-timeout>30</session-timeout>

  </session-config>

  默认配置是配置在config下的web.xml

3、当浏览器关闭后,服务器不关闭,两次获得session不是同一个。

如果想要想要相同

  Cookie ck = new Cookie(“JSESSIONID”,sesssion.getId());

  ck.setMaxAge(3600);

  response.addCookie(c);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值