session.invalidate()和session.removeAttribute()的区别
1.理清概念
要明白这两个方法的区别,首先需要弄清楚这两个对象的概念。
1.1.关于session
session是一种保存在服务端的,用于记录用户状态的对象。
用户状态可能有很多种,如登录用户名,登录时间等等,每一种信息都可以以键值对的形式存储在session中。
每一种信息都是session的一个属性,即attribute。
session一般用于会话控制等。
session创建
//创建session (HttpServletRequest request)
HttpSession session = request.getSession(true);
session的存活
session默认能够存活30分钟,可以通过中间件(如tomcat)或者在程序中对session的存活时间进行配置。
配置方式详见: Session设置失效时间的几种方式(tomcat、webapp)。
session的销毁
session的销毁有两种方式:过期和手动销毁。
- 过期:超过了存活时间。
- 手动销毁:
session.invalidate();
注意:关闭浏览器并不能销毁session。具体分析如下:
- session的创建和销毁只能在服务器端进行。
- 客户端访问session资源是通过浏览器创建的sessionid进行的,而sessionid只存活于浏览器运行期间。
- 关闭浏览器,然后再打开浏览器,对服务端的session来说,什么也没有发生。
- 关闭浏览器,然后再打开浏览器,客户端的sessionid会发生变化,因此无法再通过这个新产生的sessionid找到原来的session信息。
- 所以,关闭浏览器看上去是销毁了session。但是,那只是假象,session没有发生变化,只是你找不到了。
1.2.关于session.attribute
session.attribute只是某个session中以键值对存在的一条信息。
session.attribute的赋值
//设置session中的一条信息
request.getSession().setAttribute("message","hello world!");
session.attribute的使用
//过去session中的一条信息
String message = (String) request.getSession().getAttribute("message");
session.attribute的移除
//移除session中的一条信息
request.getSession().removeAttribute("message");
2.session和session.attribute的区别
当理清了session和session.attribute的概念后,很容易知道session.invalidate()和session.removeAttribute()的区别。
- session.removeAttribute():删除session中的某一个用户状态属性。
- session.invalidate():销毁session,此session中所有的用户状态属性都将不存在。
session.invalidate()和session.removeAttribute()的区别相关推荐
- 将登录等信息保存到session中和退出session
做项目时,可能会将某些信息保存在session中,如登录等信息,这样方便在某些页面使用这些保存的信息. 要想保存这些信息,需要创建一个类,该类里面定义需要保存的变量等信息,当登录后就通过new一个该类 ...
- session.removeAttribute(“ “)和session.invalidate()的区别
session.removeAttribute(" ")和session.invalidate()的区别 removeAttribute存在session里的值没有了,但sessi ...
- JavaWeb:request.getSession().invalidate()与request.getSession().removeAttribute()的区别
一.Session是什么? Session对象存储特定用户会话所需的属性及配置信息. 当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个会话中一直存在下去.当 ...
- 服务器端Session和客户端Session, 以及cookie的区别
Session其实分为客户端Session和服务器端Session. 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识.SessionID是一个由24个字符组 ...
- 服务器端Session、客户端Session和Cookie的区别
1.Session其实分为客户端Session和服务器端Session. 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识.SessionID是一个由24个字 ...
- session.invalidate()
当浏览器第一次请求时,服务器创建一个session对象,同时生成一个sessionId,并在此次响应中将sessionId 以响应报文的方式传回客户端浏览器内存或以重写url方式送回客户端,来保持整个 ...
- session 、cookie、token的区别
session session的中文翻译是"会话",当用户打开某个web应用时,便与web服务器产生一次session.服务器使用session把用户的信息临时保存在了服务器上,用 ...
- SAP 中session和外部断点设置的区别
1 Session Breakpoints:只在当前user session的所有main session中有效 2 External Breakpoints 在abap editor或事务SICF中 ...
- java 移动端session失效,Session is invalid
场景,移动端重复登录,同一个设备(这里是用pc端浏览器模拟)第一个人登录后,第二个人登录. 实现,显示第二个人的数据信息,不能串号.类似顶下去了.所以我先把第一个人的session干掉,再创建新的se ...
最新文章
- mysql临时文件和临时表_理解mysql的临时表和文件排序
- LIS最长上升子序列
- java状态模式和策略模式_Java状态和策略设计模式之间的差异
- Could not autowire. No beans of 'DeptDao' type found
- 花了20分钟,给女朋友们写了一个web版群聊程序
- java cache教程_Java 中常用缓存Cache机制的实现
- java中异常抛出后代码还会继续执行吗
- Yii2学习笔记(一):Yii的安装和使用(base版)
- 偏最小二乘法 Partial Least Squares
- 计算机制图大赛,制图大赛简介
- linux开发板网口连接测试方法
- C++系列(关键字static)
- 这样去做信用贷款违约预测项目,效果提升明显
- IP地址分类/IP地址10开头和172开头和192开头的区别
- python生成exe启动很慢_python生成exe启动很慢|Win7电脑启动慢如何解决?Win7使用Msconfig.exe解决电脑启动慢的方法...
- fastadmin 获取表格选中列的id和值
- 递归回溯--数字分解java代码
- 支付宝RSA2公钥证书生成办法
- 太秀了!那个在 GitHub 用文言文编程的小哥,竟从 28 万行唐诗中找出了对称矩阵
- ITE IT986X系列build命令实现