关于jsp中session失效的问题?

关于jsp中session失效的问题?,第1张

你关闭浏览器,应该可以使 session失效。指关闭本页面,如果还有其它页面,那么 session还是没有失效。只有当超时时间到了,才失效。缺省是30分钟。你可以更改,再web.xml中设置

<session-config>

<session-timeout>5</session-timeout>//分

</session-config>

或者,创建session是直接设置

session.setMaxInactiveInterval(300);//秒

如果你只是要在页面关闭时作一些 *** 作,直接用JavaScript的事件onunload就可以了。

如果你是在捕获session失效事件,那就比较复杂了。标准的做法是用session的监听类。

http://www.javaresearch.org/article/16478.htm

在jsp页面中,如果没有明确的给出 <% @page session="false"%>,web服务器就会自动创建session。

过程是这样的,第一次在浏览器中查询某个jsp页面,web服务器接到请求,会根据服务器端的jsp页面创建java文件。如果没有给出<% @page session="false"%>,jsp会自动的、偷偷的增加一句javax.servlet.http.HttpSession session = request.getSession(true)。session就是在这里被创建的。然后编译calss文件,生成html页面。

session的一个特性:存在于服务其中。它在服务器中作为一个对象使用的。

session的另一个特性:session具有周期。session过期的时间是可以设置的。

session还有一个特性:具有独立性,拥有自己的id。这个id可以被浏览器记住。

下面来回答问题:

第一个问题:在同一个服务器下,session的对象不变,当离开当前服务器,来到另一个服务器时(浏览器未关闭)那么原服务器的session还存在吗?

答:所谓到另一个服务器,就是在浏览器端访问另一个网站。而没有给原来的网站服务器通信,原来session肯定不会被关闭。只要不超过session的周期,还是存在的。

问题二:如果是,代表原服务器session存在和新服务器session在一起并存 只要浏览器未关闭,session就在吗?

答:只要不超过session的周期,还是存在的。另,你说的session并存没错,但不在同一个地方,它在不同的服务器里面。你用的浏览器里并存的只是session的id,用来区分session的。

问题三:还有我说的是在同一个窗口中打开原先的服务器被新的服务器代替,这样子session还存在吗。

答:你这样的说法我有点迷惑,就按你重启服务器来回答了。session是对象,你重启服务器,原来的对象自然就没了,session也就不存在了。

由于本人所学有限,回答可能有谬误,请指出。参考资料:http://hi.baidu.com/ckcvrzvwrubemsq/item/c8d4c58c48c4062c110ef32f

首先确认你setAttribute的时候type不为空若不为空的话,在查看你的tomcat配置是否配置了session的过时时间,若设置了,把它改为更长的时间。我认为只有这两种可能性取不到值。希望能帮到你


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9914126.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存