日期:2014-05-18  浏览次数:20674 次

如何在关闭页面时清空session ?老问题~急~急~
我要在jsp页面关闭是清空session,网上查了下发现几种方法不太好
1.利用onunload事件弹出一个新窗口来关闭session.
弊端:一些客户端IE设置会阻止弹出窗口,刷新好像也会运行onunload事件
2.要在关闭网站最后一个窗口时才关闭session
忘大虾能给出完美解决方案,最好有列子或源代码参考~
谢谢了啊~
明天要再解决不了,经理非把我T了不可~
在线等~急急~

------解决方案--------------------
还是使用onunload,不过不弹出窗口,而是使用xmlhttprequest异步(ajax)提交请求到服务器,服务器销毁session
------解决方案--------------------
客户端的事件是靠不住的(如非法关机,网络连接中断等),你应当结合cookie来实现,cookie可以设置关闭页面就过期的(默认值),因此,你应当先通过cookie判断在处理Session。
------解决方案--------------------
实在不放心客户端,干脆禁止cookie,统统使用 URL 重写来传递sessionID 保持会话,一了百了。
------解决方案--------------------
javascript能干的JSP也能 需求写死了!
------解决方案--------------------
没有Cookie,你的Session也就没有用了。Session是依赖 Cookie的,
asp.net里倒是有禁止cookie的方法,是将cookie放到了url里
------解决方案--------------------
当然,不管出现什么意外情况,要在很短的时间内清空也是可以的。那就是定时器。
你想一下网站被人放木马的情况你就能知道怎么做了
------解决方案--------------------
web.xml
<!--session过期时间设成1分钟-->
<session-config>
<session-timeout> 1 </session-timeout>
</session-config>

all.jsp
<!--所有jsp页上加如下代码-->
<script>
var s=30,x=0,rurl= "remain.jsp ";
//30分钟内30秒连一次网站,保证session有效
function f(){
var httpRequest = new ActiveXObject( "microsoft.xmlhttp ");
httpRequest.open( "GET ", rurl, false);
httpRequest.send(null);
x++;
if(x <60){
setTimeout( "f ",s*1000);
}
}
f();
</script>

remain.jsp
<!--无意义页,只为f()提供一个连接页-->
<html> </html>
------解决方案--------------------
能不能这样 如果你定义的session不活动时过期时间为60分钟 能不能在第59分钟时候去修改用户状态
------解决方案--------------------
我写的是模拟30分钟超时的

如果要session-timeout设为30分钟,这个问题根本就是没法解决的,你难道能让母鸡下出鸭蛋?钻死牛角尖的家伙
------解决方案--------------------
想不通?
Session虽然是在服务器端,但页面访问过后是与服务器端打开的,也就是说,服务器不知道下一次是否是一个人。靠什么记住是一个人?Session 传递一个SessionID到客户端,就是这个Cookie值记住的,
你可以alert(document.cookie)看看你的页面是否有一长串的数字
------解决方案--------------------
你不能全部捕捉到客户端关闭IE的方法,最简单例子遨游的标签页双击关闭就捕获不到。
------解决方案--------------------
好贴,关注...

希望把你给顶上去...