WEB系统 记录当前用户个数,当前访问系统的用户名

原创 2007年09月12日 10:53:00

 这个文件用来记录用户 用户在线个数 以及用户名密码
package com.yc.ycportal.userutil;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author heli
 *
 */
public class OnlineUser {

 private static long online = 0;

 private static Map userNameMap = new HashMap();// 目前只提供在线用户中文名字
             // 以后如果有需求可以考虑扩充

 private static Log log = LogFactory.getLog(OnlineUser.class);

 public static long getOnline() {

  return online;

 }

 public static boolean userOnline(String memEName, String memCName) {
  log.debug("创建用户Session");
  try {
   log.debug("用户名为:" + memEName);
   log.debug("userNameMap" + userNameMap);
   if (userNameMap.containsKey(memEName)) {
    log.debug("用户重复登陆");
    return false;
   } else {
    userNameMap.put(memEName, memCName);
    return true;
   }
  } catch (Exception e) {
   log.error("将用户信息放入userNameMap失败,信息如下:" + e.getMessage());
  }
  log.debug("userNameMap" + userNameMap);

  return false;
 }

 public static void raise() {

  online++;
  log.debug("当前在线用户个数" + online);
 }

 public static void reduce() {

  online--;
  log.debug("当前在线用户个数" + online);

 }

 public static void userOffline(String memEName) {
  // TODO 自动生成方法存根
  log.debug("清除用户信息");
  try {
   log.debug("用户注销 用户名为:" + memEName);
   userNameMap.remove(memEName);
  } catch (Exception e) {
   log.error("清除用户信息失败:" + e.getMessage());
  }
 }

 public static void main(String arge[]) {
  System.out.println("+++++++++++++++==");
  Map map = new HashMap();
  map.put("1", "a");
  map.put("2", "b");
  map.put("3", "c");
  map.put("4", "d");
  map.put("5", "e");
  Set set = map.keySet();
  Iterator ito = set.iterator();
  while (ito.hasNext())
   System.out.println(ito.next());
 }

 /**
  * @return userNameMap
  */
 public static Map getUserNameMap() {
  return userNameMap;
 }

 /**
  * @param userNameMap
  *            要设置的 userNameMap
  */
 public static void setUserNameMap(Map userNameMap) {
  OnlineUser.userNameMap = userNameMap;
 }

}

 

 

这个用户用来实现对用户登陆,注销,以及session 过期用户的处理


package com.yc.ycportal.userutil;

/**
 * @author heli
 *
 */
import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.yc.ycportal.user.User;
import com.yc.ycportal.util.Constants;

public class OnlineUserListener implements HttpSessionListener {

 private static Log log = LogFactory.getLog(OnlineUserListener.class);

 public void sessionCreated(HttpSessionEvent hse) {
  OnlineUser.raise();
 }

 public void sessionDestroyed(HttpSessionEvent hse) {
  User user = (User) hse.getSession().getAttribute(Constants.LONGIN_USER);
  if (user == null)
   log.debug("捕获用户session注销操作,该用户为未登陆用户!");
  else {
   try {
    OnlineUser.userOffline(user.getMember().getMemname());
   } catch (Exception e) {
    log.error("清除在线用户信息时,捕获用户名出错,错误信息如下:" + e.getMessage());
   }
  }
  OnlineUser.reduce();

 }

}

 

为了完成整个功能还需要 在用户登陆的时候调用userOnline(String memEName, String memCName)

用户注销的时候调用   public static void userOffline(String memEName) 以及session.invalidate()方法

WEB系统 记录当前用户个数,当前访问系统的用户名 2

为了启动session监听需要在 web.xml中加入                 com.yc.ycportal.userutil.OnlineUserListener      ...

一个web应用程序统计在线用户列表的东东

来源:键盘敲击者cncxz  http://olu.desktopit.net/whitepaper.aspx一般来说,用户离开系统的方式有四种:主动注销、会话超时、直接关闭浏览器、在当前窗口导航到其...

web项目统计在线人数

1、定义一个监听器,实现HttpSessionBindingListener接口

java web 项目如何获取客户端登录帐号信息(用于SSO或其他)

但是这种方式获取的是服务端机器的信息。 举例来说,如果你使用的是Tomcat 的服务器, 那么, 以上方法获取的是Tomcat 所在机器的信息。 有的时候, 我们需要获取Web 客户端的一些信息,...
  • oscar999
  • oscar999
  • 2014年01月16日 12:19
  • 19259

一张二维码集成微信、支付宝支付

解决方案是通过User-Agent 来判断扫描的来源Http Header之User-AgentUser Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent...

微信公众号支付开发流程总结

近期负责的一个微信直销项目,需要用到公众号支付功能。该项目是从微信公众号引导客户进入H5页面选购产品、下单支付,要在网页端调起支付API(即在微信浏览器里面打开H5网页中执行JS调起支付)。小编在开发...

WEB系统 记录当前用户个数,当前访问系统的用户名

这个文件用来记录用户 用户在线个数 以及用户名密码 package com.yc.ycportal.userutil; import java.util.HashMap; import ja...

获取windows系统ip、计算机名、当前用户名

1、用gethostname函数获取计算机名,用gethostbyname函数获取当前系统ip #include using namespace std; #include "winsock2...

perl获取当前系统用户名以及其他

http://hi.baidu.com/study_cs/item/03d6ce26d8b58e4247996223 在perl中获取当前登陆的用户名,要求在windows和linux下都可用.通过...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEB系统 记录当前用户个数,当前访问系统的用户名
举报原因:
原因补充:

(最多只允许输入30个字)