1.是不是只要一打开一个页面就会产生一个jsessionid?
2.在不关闭浏览器的情况下,什么时候jsessionid会改变?我登陆后,登陆然后退出,jsessionid会有什么变化?
3.session和jsessionid有什么关系?
谢谢!
2.在不关闭浏览器的情况下,什么时候jsessionid会改变?我登陆后,登陆然后退出,jsessionid会有什么变化?
3.session和jsessionid有什么关系?
谢谢!
所谓session你可以这样理解:当你与服务端进行会话时,比如说登陆成功后,服务端会为你开壁一块内存区间,用以存放你这次会话的一些内容,比如说用户名之类的。那么就需要一个东西来标志这个内存区间是你的而不是别人的,这个东西就是session id(jsessionid只是tomcat中对session id的叫法,在其它容器里面,不一定就是叫jsessionid了。),而这个内存区间你可以理解为session。
然后,服务器会将这个session id发回给你的浏览器,放入你的浏览器的cookies中(这个cookies是内存cookies,跟一般的不一样,它会随着浏览器的关闭而消失)。
之后,只有你浏览器没有关闭,你每向服务器发请求,服务器就会从你发送过来的cookies中拿出这个session id,然后根据这个session id到相应的内存中取你之前存放的数据。
但是,如果你退出登陆了,服务器会清掉属于你的内存区域,所以你再登的话,会产生一个新的session了。
不好意思,我可能说得不太清楚,但这方面的知识网上有不少,你可以了解下session的原理。
因为Session默认是需要Cookie支持的,但有些客户浏览器是关闭Cookie的【而jsessionid是存储在Cookie中的,如果禁用Cookie的话,也就是说服务器那边得不到jsessionid,这样也就没法根据jsessionid获得对应的session了,获得不了session就得不到session中存储的数据了。】
这个时候就需要在URL中指定服务器上的session标识,也就是类似于“jsessionid=5F4771183629C9834F8382E23BE13C4C” 这种格式。
用一个方法(忘了方法的名字)处理URL串就可以得到这个东西,这个方法会判断你的浏览器是否开启了Cookie,如果他认为应该加他就会加上去。
1.是不是只要一打开一个页面就会产生一个jsessionid?
答:显然不是的。session是有一定作用域的,而且是有时间限制的。2.在不关闭浏览器的情况下,什么时候jsessionid会改变?我登陆后,登陆然后退出,jsessionid会有什么变化?
答:jsessionid是服务器那边生成的,因为cookie是服务器那边送到客户端的信息。不管能不能修改jsessionid,都不应该修改,如果你修改了,这就失去了jessionid的自身意义了,你修改的话,你让服务器那边如何找到对应的session?找不到的话,你存放在那个session中的数据不是取不到了吗?
登陆然后退出,我认为会重新生成一个jsessionid。因为退出的话,application作用域的数据都会丢失,更何况这个比它作用域还小的session?既然session都消失了,这个jsessionid有什么用?第3题已经答过了。如果理解有误的话,希望大家不吝指正。
参考下
1.我打开一个页面,1分钟不动,1分钟后jsessionid会改变吗?
2.登陆后1分钟不动,然后jsessionid会变吗?
总而言之,哪些动作会让jsessionid改变?
页面超时?setAttributes给一个session?不太清楚...
还望大家帮助~
如果你只是打开了登陆页面,而没有登陆,你根本就没有得到session,何谈session失效,得到session 的时机是你的登陆程序中用到了形如request.getSession()这样的语句,才会为你建一个session。
2.登陆后1分钟不动,然后jsessionid会变吗?
登陆后,你的确得到了session,也拥有了一个session id(jsessionid),如果你一分钟不动,属于你的session会失效。但此时你的jsessionid并没有变,因为此时你的jsessionid是放在了你浏览器的cookies中的。如果你这时进行操作,浏览器会将你的jsessionid传送到服务器,服务器拿这个jsessionid去找属于你的session,但不好意思,这时找不到了,因为超时后被干掉了。
这个时候jsessionid还是跟失效之前的一样吧?
跳转到html页面不会改变session的吧?
8楼都已经说了,超时的时候你的session就已经消失了,你再点回页面也是要重新登录的,session消失了你的信息就已经不在了~~~~
我不是很懂但大概应该是这个样子~~~
源码:
1.public void invalidate()
2. {
3. invalid = true;
4. clearAttributes();
5. }