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

JavaScript017

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

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=nullsleep(5000)newWindow.close()//新窗口关闭 }

}

function sleep(milisecond)

{ var currentDate,beginDate=new Date()var beginHour,beginMinute,beginSecond,beginMsvar hourGaps,minuteGaps,secondGaps,msGaps,gapsbeginHour=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/htmlcharset=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,就可以实现了。

这样应该很难实现的.但可以想一起不常用的办法.

首先,session是用户级的一个全局变量,也就是说不管你是子页还是父页都是一样的session,而不会存在什么子页的session或是父页的session,它们是一个,不管你有多少个页面在未超时的情况下都是一个session的.

所以,这样你可以让你的存活时间改为0,也就是只有浏览器打开时是存活的,浏览器关闭时即可关闭就可以了.不知道你是出于什么样的目的来做这个代码的.

当然,因为是用户级的,所以如果设置时间为0时,所有的用户都是一样的.如果想实现某一个用户关闭就关闭时,不能这样设置的.一个例子,所有的用户都是关闭网页时30分钟取消session,这个值的设置是在application,站在了服务端的全局,所以不能对特定的一个用户进行设置的.虽然可以使用页面中,页面级可以,但用户级,还是特定用户时,可以使用session来做一下.

用户打开一个页面时,用session("pagecount")赋值为1,当然再打开一个就加1,这样可以统计当前用户打开了多少个页面的.关闭一个就减1.

判断一下你这个是否是那个特殊的用户,若是,则检查其session("pagecount"),如果这个值是1时,在关闭时可以直接清除session,若不是1时,将其值减1,这样做的目的,只是对于特定用户进行的有效清除.

当然,如果是所以用户都是这样子的话,一定要用timeout进行设置,这样非常方便.

在打开一个浏览器中可以这样写:

if

isnull(session("pagecount"))

then

session("pagecount")=1

else

session("pagecount")=session("pagecount"+1)

end

if

关闭浏览器的事件中可以这样写:

if

session("pagecount")

=

1

then

'这里清除session

else

session("pagecount")

=

session("pagecount")-1

end

if

这样可以实现当关闭最后一个窗口时清除session.当然,这些还要加上对用户的判断,可以实现对特定用户用行特定清除.而不是所有用户.

还打可实现,关闭第一个页面时进行清除,比如用户打了第一个页面,用session变量记录下来,关闭时检查是否为记录的页面,若是,则清除session或者干些其他的事.

清除SESSION需要动态网页支持,直接JS操作Session需要借助Ajax

大致思路:

在而面body中增加unload方法

借助jquery,

<body onunload="goodbye()">

<script type="text/javascript" src="jquery.js"</script>

<script type="text/javascript">

function(){}

function goodbye()

{

$.post("action.php",{time:Math.random()},function(){}

}

</script>

在goodbye()方法中使用ajax,请求动态网页(php,asp,aspx,jsp等)进行清除Session操作。