我要在jsp页面关闭是清空session,网上查了下发现几种方法不太好
1.利用onunload事件弹出一个新窗口来关闭session.
弊端:一些客户端IE设置会阻止弹出窗口,刷新好像也会运行onunload事件
2.要在关闭网站最后一个窗口时才关闭session
忘大虾能给出完美解决方案,最好有列子或源代码参考~
谢谢了啊~
明天要再解决不了,经理非把我T了不可~
在线等~急急~
1.利用onunload事件弹出一个新窗口来关闭session.
弊端:一些客户端IE设置会阻止弹出窗口,刷新好像也会运行onunload事件
2.要在关闭网站最后一个窗口时才关闭session
忘大虾能给出完美解决方案,最好有列子或源代码参考~
谢谢了啊~
明天要再解决不了,经理非把我T了不可~
在线等~急急~
解决方案 »
- 解决此js问题100分只给你一个人~
- don't flush the session after an exception occurs
- http 500错误内容在里面 请帮忙看看
- 急用:如何根据JSP写出这个JAVABEAN
- 郁闷,散分,顺便做个调查
- java中的递归问题
- 用tomcat5+struts1.1,修改一个类后都需要重新启动一下tomcat吗,在什么地方设置一下不需要每次都重启才可以
- 关于efsframe 小问题
- true 是什么意思????
- 我装了jbiulder6,自带tomcat3 我机器上也装了tomcat4.1.24,我想让jbiulder6用我安装的tomcat4怎么做?多谢
- spring 如何给抽象类进行以来注入或者说spring能不能对抽象类进行依赖注入
- iReport入门教程
onunload加在哪里?怎么在关最后一个窗口时关闭session?
1) 虽然有 window.closed ,但是不要指望用 window.closed 来判断当前窗口是否被关闭了!(一般用来判断有名子窗口是否被父窗口成功关闭),不相信的话自己在onunload的handler里面写个alert (window.closed)去看看好了。
2) onunload 事件的handler 不光在窗口关闭的时候,在页面被刷新的时候,通过HREF离开本页面的时候也都会被调用。而且IE之外的很多浏览器都不能正常支持这个事件,IE版本过低的时候,也会失效。
(BTW, 前天写了一段javascript,onload和onunload事件都写好,通过两台WindowOS的PC,都安装着IE6.01,执行同样的javascript代码,一边正常执行了onunload事件的处理,另一边没能执行,原因至今是迷。)
3) onbeforeunload 事件,和onunload一样,貌似只有IE支持该事件,不过感觉比onunload可靠些。(2)的那个问题,最终靠onunload->onbeforeunload搞定)
4) 关闭IE的方法有:
a)左键点击右上角X按钮
b)ALT-F4
c)CTRL-W
d)左上方下拉菜单 File -> Close
e)TaskBar右键单击Task,弹出的菜单->Close
f)启动任务管理器,选中IE进程,强制终了
g)关机,拔电源等等物理手段
试着写出来在窗口被关闭时进行特定处理的javascript,但是最终没有被采用...
function window.onbeforeunload()
{
if(((event.clientX > document.body.clientWidth) && (event.clientY<0))
|| event.altKey
|| event.ctrlKey)
{
alert("窗口被关闭了!");
}
}
这段东西可以成功侦测到a,b,c,3类关闭窗口的动作。 但是c)的时候有问题,如果用户按下CTRL-F5的话,IE执行F5操作,页面被刷新...onbeforeunload的handler被调用...
JavaScript可以侦测多数按键的KeyCode,但是无法取得CTRL/ALT/SHIFT组合键的KeyCode,所以无法准确判断Alt-F4,Ctrl-W。
而剩下的defg四种关闭IE的方法,javascript鞭长莫及...
最终结论,单靠Javascript无法在窗口关闭的时候进行特定处理。
如果真碰到这样的业务需要的话,请考虑用Javascript以外的实现方案,比如采用JSP之类的动态网页技术。不要像本人一样浪费大好青春了...
客户端在IE的“工具”菜单下选择“Intertnet选项”的“安全”,按自定义级别,将Cookie部分设为关闭,那怎么办?
asp.net里倒是有禁止cookie的方法,是将cookie放到了url里
<!--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>
4.本网站要求session超时为30分钟
没有Cookie,你的Session也就没有用了。Session是依赖 Cookie的,
------------------------------------------------------------
cookie是客户端的,session是服务器端的,
Session是依赖 Cookie的?想不通!
准备再开帖讨论下session 和cookie?
Session虽然是在服务器端,但页面访问过后是与服务器端打开的,也就是说,服务器不知道下一次是否是一个人。靠什么记住是一个人?Session 传递一个SessionID到客户端,就是这个Cookie值记住的,
你可以alert(document.cookie)看看你的页面是否有一长串的数字