|
在网站中,一般要记录用户是什么时候登入和什么时候登出。对于登录进去时,可以在验证的同时向数据库写入信息,但是用户离开时可能直接关掉浏览器,想记录也记不了。
一般做法可能是从Session中入手,当Session失效时,就记录用户离开。使用HttpSessionBindingListener可以很方便地实现这个简单的功能。
下面是我的简单示例。
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import org.jvk.dao.LogDAO;
public class UserSession implements HttpSessionBindingListener {
public void valueBound(HttpSessionBindingEvent event) {
new LogDAO().log(name, ip, "登入");
}
public void valueUnbound(HttpSessionBindingEvent event) {
new LogDAO().log(name, ip, "登出");
}
// 用户名
private String name;
// 用户组名
private String groupName;
// 用户IP
private String ip;
/* 省下面一些 getter 和 setter 方法 */
}
有了这个比较特殊的 bean 后,只要在验证用户登录时写多一些这样的代码:
- UserSession userSession = new UserSession();
- userSession.setName(name);
- userSession.setGroupName("普通会员");
- userSession.setIp(ip);
- req.getSession(true).setAttribute(Constants.USER_SESSION,
- userSession);
复制代码
一般来说,在用户登录后,我们总要在Session中保存些东西的。
为了快速测试代码,我在web.xml把Session的生命周期为1分钟。
- <session-config>
- <session-timeout>1</session-timeout>
- </session-config>
复制代码
只要是和在线离线相关的,似乎都可以用这个方法。但是第一次用HttpSessionBindingListener这个接口,也不知道会有什么副作用。
去百度找下相关资料,再去谷歌搜一下。
闪人!
[ 本帖最后由 powerwind 于 2007-5-6 01:32 编辑 ] |
|