netbank2001:
当成功时,把用户放入成功列表。
static hashMap successUserList;
key:客户号
value:userA implements HttpSessionBindingListener
public abstract class User implements HttpSessionBindingListener
当客户退出时,该session失效
httpsession.invalidate();
httpsession = httpservletrequest.getSession(true);
private transient LoginController Logincontroller
userA
public void valueBound(HttpSessionBindingEvent httpsessionbindingevent1) {
}
public void valueUnbound(HttpSessionBindingEvent httpsessionbindingevent) {
try {
Logincontroller.setLogout();
} catch (Exception exception) {
}
}
PeDuploginController
public void setLogout() throws CsiiException {
UserRegistryItem userRegistryItem = (UserRegistryItem)ClusterLoginControlSerlvet.getSuccessUserResourceList().get(super.user.getUserId());;
int i = userRegistryItem.getLoginCount();
if(i > 1) {
CsiiUtils.dump("in HashtableBaseLC.setLogout(), set loginId:" + super.user.getUserId() + " count - 1");
userRegistryItem.setLoginCount(i - 1);
} else {
CsiiUtils.dump("in HashtableBaseLC.setLogout(), remove loginid:" + super.user.getUserId());
ClusterLoginControlSerlvet.getSuccessUserResourceList().remove(super.user.getUserId());
}
}
Session 代表客户的会话过程,客户登录时,往 Session 中传入一个对象,即可跟踪客户的会话。在 Servlet 中,传入 Session 的对象如果有一个实现 HttpSessionBindingListener 接口的对象(方便起见,此对象称为监听器),则在传入的时候(即调用 HttpSession 对象的 setAttribute 方法的时候)和移去的时候(即调用 HttpSession 对象的 removeAttribute 方法的时候或 Session Time out 的时候) Session 对象会自动调用监听器的 valueBound 和 valueUnbound 方法(这是 HttpSessionBindingListener 接口中的方法)。
分享到:
相关推荐
在本例中,我们将使用HttpSessionBindingListener来记录登陆者的用户名和登录时间到数据库中。 首先,让我们回顾一下HttpSessionBindingListener接口。该接口定义了两个方法:valueBound和valueUnbound。valueBound...
在Java Web开发中,`HttpSessionBindingListener`接口是一个非常重要的工具,用于监听session中的对象绑定和解绑事件。这个接口提供了对用户会话状态变化的观察能力,从而可以实现一些高级功能,如在线人员查看、...
jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。
5. 对于大型项目,可能需要考虑线程安全问题,如使用`synchronized`关键字或`ConcurrentHashMap`等数据结构来处理并发访问。 通过这种方式,我们不仅能够实时地统计在线用户数,还可以方便地扩展功能,例如记录用户...
- 使用`HttpSessionListener`可以监控用户登录状态的变化,及时更新在线用户列表,从而确保各个子系统之间共享正确的用户状态信息。 - 通过`HttpSessionBindingListener`可以在用户登录时绑定必要的认证信息至会话中...
例如,我们可以创建一个实现了`HttpSessionBindingListener`的UserSession类,然后在Spring配置文件中声明该bean,并将其注入到需要使用session的控制器或服务类中。 Struts2作为MVC框架,负责处理HTTP请求和转发到...
在线人数统计的实现也可以使用其他技术,例如使用应用程序的 Context 来保存在线用户名单,但是使用 HttpSessionBindingListener 接口可以使得实现更加简洁和高效。 在线人数统计的应用场景非常广泛,例如在线聊天...
属性监听和bean监听的区别: 属性监听:是对三个容器中的任何属性(包括对象和不是对象的数据,基本...从使用上它不同于前面两个监听器的学习,但给我们的感觉就是一个属性监听的vip用户,这个vip用户是一个JavaBean
在Servlet 2.2中,我们可以使用`HttpSessionBindingListener`接口,而在Servlet 2.3中,还可以使用`HttpSessionAttributeListener`。不过,由于某些环境可能不直接支持Servlet 2.3,所以这里我们关注`...
- **`HttpSessionBindingListener`**:监听`HttpSession`中的属性绑定事件。 - **`HttpSessionContext`**:提供对多个`HttpSession`的访问。 #### 四、实用类 - **`Cookie`**:封装了HTTP Cookie的创建和管理。 - ...
这个类实现了`HttpSessionBindingListener`接口,这意味着每当一个会话创建或销毁时,该类都会收到通知,从而更新在线用户列表。`onLineUser`类主要功能包括: 1. **用户计数**:`getCount()`方法返回当前在线用户...
在这个小型案例中,我们使用了Java Servlet中的`HttpSessionListener`和`HttpSessionBindingListener`接口来实现这一功能。以下是对这两个接口以及整个案例的详细解释: 1. **`HttpSessionListener`接口**: `...
使用DBUtil工具类简化数据库连接和操作,包括获取数据库连接、执行SQL语句和关闭连接。 支持部门信息的增删改查操作。 2. 用户管理 实现用户登录和注销功能,通过UserServlet处理用户登录请求,验证用户名和密码...
- 使用`javax.servlet.http.HttpSessionBindingListener`接口实现Session监听,当验证码过期或被替换时,自动移除旧的验证码。 - 对于高并发场景,可以考虑使用分布式Session存储,如Redis,以解决单台服务器Session...
1)创建LoginServlet类,来提供用户登录功能,以及接入HttpSessionBindingListener的实现类中进行动态监听, 2)创建OnlineUserBindingListener类实现HtpSessionBindingListener接口,重写其中的两个方法, 3)在类...
在这个例子中,我们将探讨如何使用Nginx作为反向代理和负载均衡器,结合Tomcat应用服务器以及Redis来实现session共享。这个组合常用于大型Web应用,确保用户会话在多个服务器之间无缝切换。 首先,Nginx是一个高...
使用`HttpSessionBindingListener`监听会话绑定事件 为了实时获取用户的在线状态,项目中采用了`HttpSessionBindingListener`接口。当用户登录时,该接口会被用来监听会话绑定事件,从而记录用户登录信息;当用户...
在本文中,我们将深入探讨如何使用JavaServer Pages (JSP) 实现在线人数统计功能,以便展示当前在线的用户数量。我们将分析提供的代码段,并解释关键概念和技术。 首先,我们有一个名为`onLineUser`的类,它实现了`...
- **使用HttpSessionBindingListener**:进一步讨论了如何使用HttpSessionBindingListener监听Session中对象的绑定和解除绑定事件。 ##### 9. 封装TagLib组件 - **用TagLib实现循环**:介绍了自定义标签库的使用...