javascript清除session的问题

java中的session就算浏览器关掉也还要在服务器端存活默认的时间(tomcat为30分钟)。我现在想用JavaScript判断浏览器关闭,并且关闭的浏览器是最后一个session存在的页面(也就是该页面访问那个网站没有其他的子窗口和父窗口(这里的父窗口指的是父窗口存在session))。这样的代码怎么写啊。我现在只能写成关闭一个窗口就清除session。请朋友们帮下忙。

第1个回答  2020-01-30
这样应该很难实现的.但可以想一起不常用的办法.
首先,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或者干些其他的事.
相似回答
大家正在搜