您的位置:首页 > 其它

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

2013-03-25 15:31 351 查看
这个文件用来记录用户 用户在线个数 以及用户名密码

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()方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐