用户是否在线问题(单点登陆)
2007-03-16 22:20
204 查看
1. 怎么判断session是否过期。
接触jsp已经很久了,但是还真没有想过这个问题,当时也就没有找到一个满意的答案给人家。
当时,我提到一个方法,就是实现HttpSessionListener接口,然后在sessionDestroyed()方法中执行一些操作,表示session要过期了,因为这个方法是session.invalidate()之前监听器调用的方法。这个判断的方法显然不能让人满意。
我当时问了些人,但是也没有得到一个准确的答案。
正好偶然间看到,request.getSeesion(boolean)方法,一下子让我恍然大悟。这个方法里面传了一个boolean值,这个值如果是true,那么如果当前的request的session不可用,那么就创建新的会话,如果存在就返回当前的会话。如果参数是false,那么在request的当前会话不存在的时候就返回null。
这样我们就可以很容易的联想到这个所谓的request的当前会话是否存在和session过期的联系,所以我们就可以“近似地”认为session不存在就是session过期了,那么我们就可以很容易地判断session是否过期了。方法如下:
if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");
可能大家注意到我上面有一个“近似地”字眼,也就是说存在特别情况。
这个特殊情况就是第一次请求还没有创建会话的时候,那么用这个方法返回的仍然是null,原因我想大家应该是显然的。
HttpServletRequest request = (HttpServletRequest) Executions.getCurrent().getNativeRequest();
HttpSession ssn = request.getSession(false);
ssn.setAttribute( "name",value);
2. 销毁session的问题
1)ajax
<body onunload="方法()">,此方法也不能作到肯定能删除session
2)在web端实现单点登陆主要还是靠记录jsessionid来管理session来实现,但依然存在不能精确的实现用户退出时删除session
接触jsp已经很久了,但是还真没有想过这个问题,当时也就没有找到一个满意的答案给人家。
当时,我提到一个方法,就是实现HttpSessionListener接口,然后在sessionDestroyed()方法中执行一些操作,表示session要过期了,因为这个方法是session.invalidate()之前监听器调用的方法。这个判断的方法显然不能让人满意。
我当时问了些人,但是也没有得到一个准确的答案。
正好偶然间看到,request.getSeesion(boolean)方法,一下子让我恍然大悟。这个方法里面传了一个boolean值,这个值如果是true,那么如果当前的request的session不可用,那么就创建新的会话,如果存在就返回当前的会话。如果参数是false,那么在request的当前会话不存在的时候就返回null。
这样我们就可以很容易的联想到这个所谓的request的当前会话是否存在和session过期的联系,所以我们就可以“近似地”认为session不存在就是session过期了,那么我们就可以很容易地判断session是否过期了。方法如下:
if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");
可能大家注意到我上面有一个“近似地”字眼,也就是说存在特别情况。
这个特殊情况就是第一次请求还没有创建会话的时候,那么用这个方法返回的仍然是null,原因我想大家应该是显然的。
HttpServletRequest request = (HttpServletRequest) Executions.getCurrent().getNativeRequest();
HttpSession ssn = request.getSession(false);
ssn.setAttribute( "name",value);
2. 销毁session的问题
1)ajax
<body onunload="方法()">,此方法也不能作到肯定能删除session
2)在web端实现单点登陆主要还是靠记录jsessionid来管理session来实现,但依然存在不能精确的实现用户退出时删除session
相关文章推荐
- 判断用户是否在线及实现一个账号一个人登陆
- jsp中session的判断用户是否登陆问题?
- 在多人同时登陆服务器的情况下单个用户被踢掉其桌面程序是否会关闭的问题
- 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)
- 小平台检测设备是否在线的问题
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
- 监听器配置,java监听器,登陆监听,Listener,struts监听器配置,用户在线统计
- shiro-根据JSESSIONID获取用户信息和判断是否登陆
- 普通用户无法登陆SSH问题
- 解决PHP用户登陆后无法退出问题的办法
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
- 关于登陆到域的用户,不需要显示登陆界面的问题(aspx)
- 妙用Cache检验用户是否重复登陆
- jsp判断用户是否在线
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
- 一套.net窗体身份验证方案(解决了防止用户重复登陆,session超时等问题)
- Cocos2d-x保存用户游戏数据之XML文件是否存在问题判断方法
- 转一份在 51testing 上的讨论——如何测试一个门户网站是否可以支持10万用户同时在线?
- 一套.net窗体身份验证方案(解决了防止用户重复登陆,session超时等问题)
- timage组件判断是否有图片小问题,高手进,在线等.....