jsp关闭浏览器时,如何清空session

如何在关闭浏览器时,清空此session,因为我想控制一个用户只能一个人用。如果在关闭浏览器时调用servlet。

jsp关闭浏览器时,清空session的方式如下:

function window.onUnload()
{
var newWindow;
if((window.screenLeft>=10000 && window.screenTop>=10000)||event.altKey)
{ newWindow=window.open('destorys.jsp','网页名称','width=0,height=0,top=4000,left=4000');//新窗口将在视区之外打开 newWindow.opener=null; sleep(5000); newWindow.close();//新窗口关闭 }
}
function sleep(milisecond)
{ var currentDate,beginDate=new Date(); var beginHour,beginMinute,beginSecond,beginMs; var hourGaps,minuteGaps,secondGaps,msGaps,gaps; beginHour=beginDate.getHours(); beginMinute=beginDate.getMinutes(); beginSecond=beginDate.getSeconds(); beginMs=beginDate.getMilliseconds(); do {   currentDate=new Date();   hourGaps=currentDate.getHours() - beginHour;   minuteGaps=currentDate.getMinutes() - beginMinute;   secondGaps=currentDate.getSeconds() - beginSecond;   msGaps=currentDate.getMilliseconds() - beginMs;   if(hourGaps<0) hourGaps+=24; //考虑进时进分进秒的特殊情况   gaps=hourGaps*3600+ minuteGaps*60+ secondGaps;   gaps=gaps*1000+msGaps; }while(gaps<milisecond); }
其中红色部分为你指向清除session的JSp页面。
如下:
 
<%@ page contentType="text/html; charset=GBK" %> <%@ page language="java" import="java.lang.*"%> <jsp:useBean id="login" scope="page" class="com.util.Login"/> <% session.removeAttribute("username"); session.removeAttribute("userid"); session.removeAttribute("power"); session.removeAttribute("flag"); %>
这样,在每个后台页面引用一个这个JS,就可以实现了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-28
如果关闭了浏览器,当前的会话已经被关闭,虽然服务器的session对象还存在,但是由于客户端已经关闭,无法再找到jsessionid,因此服务器端的session对象只能等待超时,然后被销毁,所以没必要清空session啊。
如果有用望采纳哦~
第2个回答  2013-08-28
在logon.jsp中这样写
session.removeAttribute("name");
session.invalidate();
out.print("<script>alert('用户即将退出,确定后退出该页面。');window.location.href='index.jsp'</script>");
%>
你试一下!本回答被网友采纳
第3个回答  2013-08-28
楼下说的都挺好的,都是一些解决方案。
第4个回答  2013-08-28
这个问题很多人问过,虽然有办法,但是并不稳定,且总体来说意义不大。

BODY有个事件 onunload,可以在里面用Ajax向服务器发送请求,但并不总是有效,因为浏览器之间还不一样。

换个思路,如果客户端掉电了?直接强制关闭浏览器了?你这个东西就没意义了。

所以如果你打算在浏览器端做点什么,我觉得把Cookie中的jsessionid删除掉就很不错了。

但是服务器端是可以通过SessionDestory事件来得知每个session超时的,虽然可能已经是半小时之后了。

Anyway,认真思考下你的原始需求是什么,再想想合理的技术手段吧。

这有一个注销session方法,你试试看行不行:session.invalidate();

jsp关闭浏览器时,如何清空session
jsp关闭浏览器时,清空session的方式如下:function window.onUnload(){var newWindow;if((window.screenLeft>=10000 && window.screenTop>=10000)||event.altKey){ newWindow=window.open('destorys.jsp','网页名称','width=0,height=0,top=4000,left=4000');\/\/新窗口将在视区之外打开 newWindow....

jsp 清除session的方法
session.removeAttribute("name");session.invalidate();out.print("alert('用户即将退出,确定后退出该页面。');window.location.href='index.jsp'");> 你试一下!我感觉在另一个浏览器中测试成功了,表示Session废除成功了!代码应该没有问题了,可能是你的IE浏览器自动保存了“name”吧!要不你装...

关闭浏览器,立刻注销Session
1.session的持有者(即客户端浏览器)在最大无活动等待时间(MaxInactiveInterval)内无任何响应或请求 2.session被调用invalidate()方法强制弊了 3.jsp服务器重起或发生中断(此时应该是所有session都当了)

H-ui.admin jsp页面如何清除当前页面数据
一、清除页面缓存 在jsp页里 <%response.setHeader("Pragma","No-cache");response.setHeader("Cache-Control","no-cache");response.setDateHeader("Expires", 0);response.flushBuffer();%> 在html页里: <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" C...

jsp怎么实现关闭网页自动退出登录状态
通常情况下,关闭浏览器后,session信息需要等到session对象失效后才能清除,如果需要实现关闭浏览器后即可清除session信息,请尝试用以下方法。 logout.jsp页面中,可以这么做:<% HttpSession session = request.getSession(); session.invalidate(); %> 现如今,基于MVC架构模式的框架,很多。所以,上述代...

PHP中SESSION的注销与清除
1、每个页面都必须开启session_start()后才能在每个页面里面使用session。2、session_start()初始化session,第一次访问会生成一个唯一会话ID保存在客户端(是基于cookie保存的),用户下次访问时,session_start()会检查有没有会话ID,如果有浏览器会带着这个会话ID过来(通过发送头文件传过来的,这个可以...

jsp 页面 退出系统后 在servlet中清空session 后页面转向login.jsp 如何...
1:使login.jsp页面不可回退 \/\/处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外 function banBackSpace(e){ var ev = e || window.event;\/\/获取event对象 var obj = ev.target || ev.srcElement;\/\/获取事件源 var t = obj.type || obj.getAttribute('type');\/\/获取事...

JSP刷新网页page对象还存在吗?session是不是关闭浏览器生命周期就结束了...
由于不能及时检测到用户的退出行为同时为了控制内存使用,WEB服务器一般采用超时时间的方式来清理session,默认是30分种,对最后访问时间大于超时时间的session进行清除。这两种技术各有优劣,URL重写的方式解决了cookie技术受限于浏览器的缺陷(目前浏览器默认支持cookie),但采用cookie技术可以在用户关闭浏览器...

jsp窗口关闭 清楚application
function openWindow(){ win=window.open("notice.asp","","height=10,width=10")} 3、处理完后,调用self.close();关闭临时窗口。不过用户断网就不灵了,权宜之计。。。可以用socket监测浏览器是否和服务器断开网络连接,貌似要用applet。。

jsp中怎么关闭窗口?
如果你 执行close()方法去关闭一个不是由脚本程序打开的窗口,就会出现一个确认对话框让用户选择是否关闭窗口。如果在历史列表中只有当前一个记录,那么在 Navigator中就不会出现对话框。然而,如果你使用close()退出最后运行的浏览器实例,确认对话框就会出现。也就是说, 我用window.open一个窗口, ...

相似回答