JSP如何实现关闭多个页面后,使session失效?

lovelystone 2009-09-18 01:23:07
各位高手,请帮忙解决一个棘手的问题:

比如,使用JSP实现,当用户登录系统后,连续打开多个页面,只有关闭所有打开的页面后,session才可以失效,关闭其中某一个页面不需要session失效,如何才能实现这样的功能,多谢多谢!!
...全文
702 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
iskyshop 2009-10-07
  • 打赏
  • 举报
回复
session只和存活时间有关系,只要打开第一个session的浏览器还存在还没有超时,就不会失效的,楼主想让session失效的目的应该是让登录用户退出吧,如果是这样的话可以使用监听器来实现@
wulg10 2009-10-07
  • 打赏
  • 举报
回复
加个退出按钮来关闭session,虽然操作起来多了一布!
huaming_fly 2009-10-07
  • 打赏
  • 举报
回复
关键是捕获关闭浏览器事件的问题。
用onunloa的话,你刷新他也触发,页面内容改变也触发,后退也触发~~
blliy117 2009-10-07
  • 打赏
  • 举报
回复
以前做聊天室的时候我就是用这种方法的来让用户退出的
zl3450341 2009-10-07
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 blliy117 的回复:]
关闭时会执行onunload事件


onunload事件写一个iframe,请求到服务器端,使用session.invalidate()使session失效就可以了。
[/Quote]


这个貌似也可以
blliy117 2009-10-07
  • 打赏
  • 举报
回复
关闭时会执行onunload事件


onunload事件写一个iframe,请求到服务器端,使用session.invalidate()使session失效就可以了。
lovelystone 2009-10-07
  • 打赏
  • 举报
回复
这个帖子这么久了,真是感谢各位,但目前还没有一个满意的方案,因为服务器端是无法监控窗口关闭事件的,根据大家出的主意,我现在有两个思考方向:
1.在客户端安装一个控件,由控件监控窗口关闭事件,并与服务器交互
2.flex_ken提供的思路:
做一个计数器num放session里
开一个页面加1
关一个减1
每次关页面前判断num数量
num=0时把session的用户对象删掉就行了

谢谢大家,现在结贴。
LBreathy 2009-09-25
  • 打赏
  • 举报
回复
用request,一次全部打开的页面是同一请求,关闭一个窗口request-1,当request=0的时候,执行session.invalidate()方法,销毁session!
danier9687 2009-09-25
  • 打赏
  • 举报
回复
关闭浏览器是不能做到使session失效的
danier9687 2009-09-25
  • 打赏
  • 举报
回复
使用session.invalidate()使session失效
gukuitian 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 innolux_08 的回复:]
为什么登出之后,点后退,又可以操作了
[/Quote]
cokie吧
sunnyfun888 2009-09-24
  • 打赏
  • 举报
回复
有一种模拟的方法,就是把session时间放短,在页面藏一个iframe不断的去刷服务器,所有页面都关的话,自然没有刷服务器的请求,session自然就超时了,当然这样会损耗一点服务器资源。
qi604388041 2009-09-22
  • 打赏
  • 举报
回复
监听request
当到了你要的数量 就关闭session
每开个页面就会有一个请求的 】

MJunnnn 2009-09-22
  • 打赏
  • 举报
回复
为什么登出之后,点后退,又可以操作了
plplum 2009-09-22
  • 打赏
  • 举报
回复
不行的,关闭浏览器其实session也不会失效的
longtenggdf 2009-09-22
  • 打赏
  • 举报
回复
已经讨论过这个问题了~前面有人问如何在掉线后让session失效,和你这个差不多吧。
qustgjk 2009-09-19
  • 打赏
  • 举报
回复
好像只有关闭了浏览器,session才失效吧,即使关闭了所有页面,session也不会失效的。你可以在用户的管理页面中设置一下“退出”功能,在点击“退出”时时session失效。session默认的有效时间好像是20分钟,你可以通过session.setMaxInactiveInterval()来设置session有效期的长短,让session失效时使用session.invalidate()
gukuitian 2009-09-19
  • 打赏
  • 举报
回复
如果真的能完美的监控IE关闭事件,

那讨论N久的单用户登录问题就不是问题了
robyjeffding 2009-09-19
  • 打赏
  • 举报
回复
监听器是不行的,当你非法退出也就是直接关闭浏览器时,是不会触发监听器的,只有设置session的存活时间短一些,如果用户在此20分钟内没有与服务器交互,就使session失效!
linghexiang 2009-09-18
  • 打赏
  • 举报
回复
学习学习
加载更多回复(14)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧