[Tapestry4] 判断session过期事件
wobu20
2007-09-03
请问,tapestry里面判断session过期的事件是哪一个?
例如,用户登录后,把用户信息存在session对象里面,并把用户表中的state属性改为在线,想实现的效果是,用户退出登录后,自动把state属性改为离线,用户如果是正常退出的话,大概知道如何实现,但是,如果用户是直接关闭浏览器页面的话,该如何判断呢?有没有什么事件来判断?这样的话就可以把状态修改的代码写在里面了! |
|
superaxis
2007-09-03
这个不是tapestry的问题,这个是Servlet容器的问题了,
采用 Session Listener 的方式可以满足你的要求。 Jun Tsai |
|
wobu20
2007-09-03
谢谢楼上的指正,再请问一下,tapestry是不是有对session的处理进行封装?
|
|
superaxis
2007-09-03
wobu20 写道 谢谢楼上的指正,再请问一下,tapestry是不是有对session的处理进行封装?
好像没有,好像仅仅对Request和Response进行了封装。 Jun Tsai |
|
wobu20
2007-09-03
再次感谢superaxis大哥的帮忙!
|
|
zhaoyl
2007-09-06
wobu20 写道 请问,tapestry里面判断session过期的事件是哪一个?
例如,用户登录后,把用户信息存在session对象里面,并把用户表中的state属性改为在线,想实现的效果是,用户退出登录后,自动把state属性改为离线,用户如果是正常退出的话,大概知道如何实现,但是,如果用户是直接关闭浏览器页面的话,该如何判断呢?有没有什么事件来判断?这样的话就可以把状态修改的代码写在里面了! 最近也在做session的过期问题 请楼主看到 留下您的MSN 有事情请教 |
|
zhaoyl
2007-09-06
或者QQ 也行 我的QQ是252574345
|
|
wobu20
2007-09-06
回楼上同志,我处理的代码如下:
java代码: package com.myso.tapestry.engine; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; import com.myso.bo.UserLogin; import com.myso.service.LoginService; public class MyVisit implements HttpSessionBindingListener{ private UserLogin userLogin; private LoginService loginService; public UserLogin getUserLogin() { return userLogin; } public void setUserLogin(UserLogin userLogin) { this.userLogin=userLogin; } public LoginService getLoginService(){ return loginService; } public void setLoginService(LoginService loginService) { this.loginService=loginService; } public String toString() { String s="用户ID:"+userLogin.getId()+"\n"; s+="用户登录名:"+userLogin.getLoginName()+"\n"; s+="用户昵称:"+userLogin.getNickName()+"\n"; return s; } public void valueBound(HttpSessionBindingEvent arg0) { } /* * session过期时执行数据库操作 * @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent) */ public void valueUnbound(HttpSessionBindingEvent arg0) { getLoginService().userLogout(userLogin.getId()); //user退出登录,设置状态为离线 } } 这样做可以实现session过期(在web.xml中设置时间)后,触发valueUnbound(HttpSessionBindingEvent arg0)事件,执行清除状态操作。 但这样做的话,如果用户直接关闭页面的话,没有办法马上清除session,仍然要等到过期后才会清除,是否要在javascript里面判断关闭事件,然后调用相应方法? 还有一种可能性是:用户正常登录(session未过期),但服务器突然遇到问题关闭掉,这么一来,用户状态就被锁定住了,无法恢复!想到的解决方法是,在服务器启动的时候执行一个初始化方法,实现的功能是执行一个数据库操作,将在线用户状态全部改为离线(因为服务器刚重启,不会有人在线的~:))。 这样设计似乎乱七八糟,没什么经验,谁有好方法的话一定要回我哦,谢谢!!! 不过应用程序初始化事件该如何配置?有看到一个帖子,但是按照里面的配置似乎有问题,所以还得请教各位大哥! |
|
jveqi
2011-01-02
session 监听器啊
|
|
汤姆猫
2012-01-04
session监听啊!
|
相关讨论
相关资源推荐
- 一个用集合做的DVD管理系统
- windows 操作系统中 各个DLL 作用简介
- DVD区域码相关知识
- Apache Wicket Cookbook
- apache wicket_教程– Apache Wicket:有趣的Web框架
- wicket-site:Apache Wicket网站的镜像
- apache-wicket
- wicket:Apache Wicket-基于组件的Java Web框架
- apache wicket_创建和扩展Apache Wicket Web应用程序
- wicket-sample:示例 Apache Wicket Web 应用程序,用于使用 Apache Fortress 演示基本的 Java EE 安全性和 RBAC