当浏览器第一次请求时,服务器创建一个session对象,同时生成一个sessionId,并在此次响应中将sessionId 以响应报文的方式传回客户端浏览器内存或以重写url方式送回客户端,来保持整个会话。关闭此浏览器窗口,其内存中的sessionId也就随之销毁。
session.invalidate()是将session设置为失效,一般在退出时使用,但要注意的是:session失效的同时 浏览器会立即创建一个新的session的,你第一个session已经失效了 所以调用它的getAttribute方法时候一定会抛出NullPointerException的
session.remove("111")//移除111的对象
jsessionid只是tomcat中对session id的叫法,在其它容器里面,不一定就是叫jsessionid了
其次你编程的时候实现了添加cookie或者用的是session 这两者都会产生cookie cookie name 为JSESSIONID 应该是你用了session编程,它会在记录此窗口的临时cookie 放在内存中 只要你这个窗口不关掉 它的子窗口也可以得到这个cookie 并使用但你一旦关掉了这个窗口 这个cookie就消失了
本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1665538
session对象的removeAttribute()方法和invalidate()方法的区别
对于存储在session会话中的对象,如果想将其从session会话中移除,可以使用session对象的removeAttribute()方法。例如:
-
<%
-
session.removeAttribute("username");
-
%>
这样就将session中名称为username的名称-值对移除了。
虽然在客户端长时间不向服务器发送请求后,session对象会自动消失,但对于反复登陆或实时统计在线用户的情况下,必须使用invalidate()方法手动销毁session。
-
<%
-
session.invalidate();
-
%>
如果在session被销毁后,再调用session对象的任何方法,都将报出 Session already invalidated异常,意为“session已经被销毁”。
由以上可以看出,执行一次removeAttribute()只是移除此session中的某一指定的名称-值对,而invalidate()将会移除整个session,里面现存的session都将被移除。