如何处理多人同时登录同一个账号以及如何统计在线人数和访问量?

话不多说直接贴代码

{HashMap hUserName = new HashMap();private int MaxSession;private int activeSession;(HttpSessionEvent se) {addSession();}(HttpSessionEvent se) {delSession();hUserName.remove(se.getSession().getId());}/*** 判断用户是否已经登录及处理方法* @author FuYuwei* @time 2014-9-19 下午07:57:39* @param session* @param sUserName 登录名* @return 用户是否已经登录的标志*/(HttpSession session,String sUserName){boolean flag = false;// 如果该用户已经登录过,则使用上次登录的用户掉线if(hUserName.containsValue(sUserName)){flag = true;// 遍历原来的hUserName,删除原来用户名对应的sessionId,,即删除原来的sessionId和usernameIterator iter = hUserName.entrySet().iterator();while(iter.hasNext()){Map.Entry entry = (Map.Entry)iter.next();Object key = entry.getKey();Object val = entry.getValue();if(((String)val).equals(sUserName)){hUserName.remove(key);}}// 添加当前用户的sessionId和usernamehUserName.put(session.getId(), sUserName);}// 如果没有登录直接添加当前用户的sessionId和usernameelse{flag = false;hUserName.put(session.getId(),sUserName);}return flag;}/*** 判断用户是否在线* @author FuYuwei* @time 2014-9-19 下午08:11:00* @param session* @return*/(HttpSession session){boolean flag = true;if(hUserName.containsValue(session.getId())){flag = true;}else{flag = false;}return flag;}/*** OnlineSessionListener监听器(实现HttpSessionListener)接口来实现页面在线访问人数统计,* 当有用户访问到页面就会创建一个session,此时会触发public void sessionCreated(HttpSessionEvent se)方法,* 如果session失效,此时会触发public void sessionDestroyed(HttpSessionEvent se)方法。* 在此方法里我们用OnlineList进行在线访问人数的统计* @author FuYuwei* @time 2014-9-19 下午08:31:28*/(){activeSession++;if(activeSession>=MaxSession){MaxSession = activeSession;}}(){if(activeSession>0){activeSession–;}}/*** 获取在线人数* @author FuYuwei* @time 2014-9-20 下午03:36:58* @return*/(){return activeSession;}/*** 获取累计访问人数* @author FuYuwei* @time 2014-9-20 下午03:37:30* @return*/(){return MaxSession;}}

在Web.xml中配置监听如下:

>com.think.SessionListener</listener-class> </listener>

少吃点,吃好的。

如何处理多人同时登录同一个账号以及如何统计在线人数和访问量?

相关文章:

你感兴趣的文章:

标签云: