论坛管理员对于一些不守规矩的登录用户可以进行踢除。这里要完成的就是这个功能。 这里有些细节需要注意:
什么是用户已经登录?就是用户信息写入到了 Session 中。
什么是对用户的踢除?就是使该用户信息所绑定的 Session 失效。
若要完成这个踢除功能,管理员首先应该可以看到所有在线用户。那么在线用户信息就 应该保存在一个集合中。
这个集合既应该有用户信息,又应该有与用户信息绑定的 Session 对象。这样便于管理 员获取到某一用户的 Session 后,将其失效。所以这个集合选用 Map,key 为用户名(各 站点都要求用户名是不能重复的,原因就是这个),value 为与该用户绑定的 Session。
这个 Map 集合中的数据应该在什么时候放进去?只要发生 User 对象与 Session 的绑定 操作,就说明有用户登录。此时就应将数据放入到 Map 中。也就是说,应该为实体类 User 实现 Session 绑定监听器 HttpSessionBindingListener。
这个 Map 集合应该什么时候创建?应该在应用启动时就创建,即在 ServletConetxt 被初 始化时被创建。所以应该定义一个 ServletContext 监听器 ServletContextListener,在 ServletContext 被初始化时创建这个 Map 集合