
<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的过时时间,若设置了,把它改为更长的时间。我认为只有这两种可能性取不到值。希望能帮到你欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)