Session,作为我们离不开的后台的技术,它的出现主要是为了解决 Http 协议的无状态特点,用于解决用户状态的存储问题,而往往对于存储来说都会涉及到一个时间问题,下面我们来看看它的销毁方式到底有哪些。

销毁的方式

默认时间到期

自己设定到期时间

立刻失效

关闭浏览器

关闭服务器

案例实操

默认时间到期

当客户端第一次请求 servlet 并且操作 session 时,session 对象生成,以 Tomcat 为例,Tomcat 中 session 默认的存活时间为 30min,即你不操作界面的时间,一旦有操作,session 会重新计时。那么 session 的默认时间可以改么?答案是肯定的。可以在 Tomcat 中的 web.xml 文件中进行修改。如下图:

自己设定到期时间

当然除了以上的修改方式外,我们也可以在程序中自己设定 session 的生命周期,通过 session.setMaxInactiveInterval(int); 来设定 session 的最大不活动时间,单位为秒。

HttpSession session = req.getSession();

session.setMaxInactiveInterval(5);

当然我们也可以通过 getMaxInactiveInterval(); 方法来查看当前 Session 对象的最大不活动时间。

立刻失效

或者我们也可以通过 session.invalidate(); 方法让 session 立刻失效。

session.invalidate();

关闭浏览器

session 的底层依赖 cookie 实现,因为不同用户访问服务器要判别到底是使用哪个 session,所以当用户第一次访问服务器的时候往往会把一个 session id 通过 cookie 存储到用户端,并且该 cookie 的有效时间为关闭浏览器,从而 session 在浏览器关闭时也相当于失效了(因为没有 session id 再与之对应)。如下图,关闭后再打开,重新给浏览器分配了个 session id。

需要注意的是这里只是 cookie 失效了,你再访问相当于服务器把你当成了新用户,又给你创建了一个 session,并没有把之前的 session 对象销毁。

关闭服务器

当非正常关闭服务器时,session 销毁;当正常关闭服务器时,session 将被序列化到磁盘上,在工作空间 work 目录下的 SESSION.ser 文件中,如果对象被保存在了 session 中,服务器在关闭时要把对象序列化到硬盘,这个对象就必须实现 Serializable 接口,下次启动服务时,自动加载到内存。如下图,正常关闭后可以看到文件夹中多了一个 SESSIONS.ser 文件,再次启动服务器则文件消失。

扩展~Cookie的销毁

从图中除了看到 Cookie 的名称和内容外,我们还需要关心一个信息,到期时间,到期时间用来指定该 cookie 何时失效。默认为当前浏览器关闭即失效。我们可以手动设定 cookie 的有效时间(通过到期时间计算),通过 setMaxAge(int expiry); 方法设定 cookie 的最大有效时间,以秒为单位。

大于 0 的整数,表示存储的秒数;若为负数,则表示不存储该 cookie;若为 0,则删除该 cookie。

负整数:cookie 的 maxAge 属性的默认值就是 -1,表示只在浏览器内存中存活,一旦关闭浏览器窗口,那么 cookie 就会消失。

正整数:表示 cookie 对象可存活指定的秒数。当生命大于 0 时,浏览器会把 Cookie 保存到硬盘上,就算关闭浏览器,就算重启客户端电脑,cookie 也会存活相应的时间。

零:cookie 生命等于 0 是一个特殊的值,它表示 cookie 被作废!也就是说,如果原来浏览器已经保存了这个 Cookie,那么可以通过 Cookie 的 setMaxAge(0) 来删除这个 Cookie。 无论是在浏览器内存中,还是在客户端硬盘上都会删除这个 Cookie。

**感谢大家看到结束

需要Java学习路线或其他资料文档:

关注公众号:盛夏的代码—>

回复关键字:“学习” “Java” “毕设”即可获取资料**

java怎么销毁session_【Java】问题:Session的销毁方式到底有哪些?相关推荐

  1. java 主动销毁session,关于java:问题Session的销毁方式到底有哪些

    问题:Session的销毁形式到底有哪些? Session,作为咱们离不开的后盾的技术,它的呈现次要是为了解决 Http 协定的无状态特点,用于解决用户状态的存储问题,而往往对于存储来说都会波及到一个 ...

  2. java 登录编程_Java编程通过session访问需要登录的页面

    使用Java访问一般网页,进行数据抓取等比较简单,直接用URL和URLConnection连接所需要的网站地址即可,然后对返回的html源码进行处理分析,获取感兴趣的内容. 不过如果是需要登录后才能访 ...

  3. java 注销变量_[ Java学习基础 ] Java对象的创建和销毁

    类实例化可生成对象,实例方法就是对象方法,实例变量就是对象属性.一个对象的生命周期包括三个阶段:创建.使用和销毁. 创建对象 创建对象包括两个步骤:声明和实例化. 1.声明 声明对象与声明普通变量没有 ...

  4. java应用uploadify 3.2丢失session

    java应用uploadify 3.2丢失session http://c-bai.iteye.com/blog/1829269 uploadify上传用的是一个flash插件.  flash中有个b ...

  5. jsp java代码取session_jsp中的session在java文件中取到

    jsp页面调用.mxml页面,然后.mxml页面调用后台java文件,在后台java文件中通过session 可以取道jsp页面中的session的值. String path = request.g ...

  6. 一次java.lang.ClassNotFoundException: org.apache.ibatis.session.SqlSession异常解决

    一次整合框架时,出现找不到类的异常,如下图所示 java.lang.NoClassDefFoundError: org/apache/ibatis/session/SqlSession 详细报错信息如 ...

  7. java.lang.ClassNotFoundException: org.apache.ibatis.session.SqlSession

    默默记录一个被自己蠢死的错误!!! 原本可以运行的项目突然报错了..!!然后自己很纳闷,因为什么都没有改,就排了两个jar冲突,百思不得其解..然后各种百度各种找问题,就是死活找不到..知道后来认认真 ...

  8. java lang NoClassDefFoundError org/apache/ibatis/session/Sq

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1.错误 ...

  9. java dubbo 连接 zk 报错 Session 0x0 for server 127.0.0.1/<unresolved>:2181, unexpected error, closing so

    可能的解决方式 配置正常,zk 启动正常,但是就是连接不上 看下是否是你的项目使用 JDK 版本过高 我这里使用的是 17 ,调成 1.8 版本即可 问题概述 provider 配置如下 <be ...

  10. java ee监听器编程,java EE开发之Servlet第四课:监听器(Listener)

    1.什么是Listener 监听器就像老板的秘书,那个秘书就是活的监听器,时时监听着老板,当老板发生一些事情的时候,秘书就会有相应的措施.比如老板口渴了,秘书就会去端茶:比如老板要提提神,秘书就会泡一 ...

最新文章

  1. Python组合数据类型之序列类型
  2. Delphi中判断字母与汉字
  3. 运输pascal 90分程序
  4. 浅谈ASP.NET框架
  5. 【转】去掉换行符的几个方法
  6. 独家总结| 基于深度学习的目标检测详解
  7. 研究生学习阶段时间安排
  8. mysql 数据库连表查询语句_数据库连表查询sql语句
  9. 了解SQL Server数据库恢复模型
  10. Learning to rank 特征抽取
  11. win11如何登陆本地用户 windows11登陆本地用户的步骤方法
  12. 【转载】 扫描二维码自动识别手机APP下载地址
  13. acm集训训练赛(二)D题【并查集】
  14. hive建表设置如果为null_hive建表语句
  15. ntdll.dll 0xc0000005
  16. Nmap下载和简单应用
  17. python nextpow2_Python signal.hann方法代码示例
  18. Vue实现导入Excel功能
  19. pypython画图中的cumsum是什么_Python绘图之matplotlib基本语法
  20. 腾讯又签下一工作室,游戏建模未来发展无法想象,你还不抓紧时间?

热门文章

  1. R语言快速入门课——结合各种生物信息学及医学案例,使R语言快速入门——R软件及Rstudio下载(同步课程正在更新中)
  2. 用VSCode写IEEE论文
  3. 计算机拓展名cad,CAD用到的各种文件格式有哪些
  4. Linux内核编程(1)
  5. python linux 打印机,Python抓取打印机硒鼓和组件剩余量的爬虫
  6. 3DSMAX 中的CS 骨骼动画插件初探
  7. 惠普企业级服务器型号,惠普企业级服务器HP rx8640
  8. 开发信模板之失联跟进样品篇
  9. html特殊符号拉丁文,拉丁文字符号大全,罗马字母
  10. ensp查看历史配置命令_华为eNSP配置基本命令