java统计用户在线时间,JAVA-用户是否在线-是不是登录-在线统计等方法

JAVA-用户是否在线-是否登录-在线统计等方法

SessionListener

package com.oddel.listener;

import javax.servlet.ServletContext;

import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

public class SessionListener implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent event) {

// TODO Auto-generated method stub

HttpSession session=event.getSession();

SessionBean sessionBean=SessionFactory.getInstance().getSessionBean();

/**

* 访问次数统计

* */

sessionBean.setAccessCount(sessionBean.getAccessCount()+1);

/**

* 在线人数统计

* */

sessionBean.getOnline().put(session.getId(), null);

}

public void sessionDestroyed(HttpSessionEvent event) {

HttpSession session=event.getSession();

SessionBean sessionBean=SessionFactory.getInstance().getSessionBean();

sessionBean.getLogin().remove(sessionBean.getOnline().get(session.getId()));

sessionBean.getOnline().remove(session.getId());

}

}

SessionFactory

package com.oddel.listener;

import javax.servlet.http.HttpSession;

public class SessionFactory {

private static SessionFactory factory;

private SessionBean sessionBean=new SessionBean();

private SessionFactory(){}

static{

factory=new SessionFactory();

}

public synchronized static SessionFactory getInstance() {

if (factory == null) {

factory = new SessionFactory();

}

return factory;

}

public void addLogin(HttpSession session, String user){

this.getSessionBean().getOnline().put(session.getId(), user);

this.getSessionBean().getLogin().add(user);

}

public void removeLogin(HttpSession session, String user){

this.getSessionBean().getLogin().remove(this.getSessionBean().getOnline().get(session.getId()));

this.getSessionBean().getOnline().remove(session.getId());

}

public boolean isOnline(String user){

return this.getSessionBean().getLogin().contains(user);

}

public SessionBean getSessionBean() {

return sessionBean;

}

public void setSessionBean(SessionBean sessionBean) {

this.sessionBean = sessionBean;

}

}

SessionBean

package com.oddel.listener;

import java.util.HashMap;

import java.util.HashSet;

import java.util.Map;

import java.util.Set;

public class SessionBean {

private Map online=new HashMap();//在线

private int accessCount=0;//系统访问人数

private Set login=new HashSet();//已经登录用户

/**

* 返回当前系统在线人数

* @return int

*/

public int getOnlineCount(){

return this.getOnline().size();

}

/**

* 返回当前系统登录人数

* @return int

*/

public int getLoginCount(){

return this.getLogin().size();

}

public Map getOnline() {

return online;

}

public void setOnline(Map online) {

this.online = online;

}

public int getAccessCount() {

return accessCount;

}

public void setAccessCount(int accessCount) {

this.accessCount = accessCount;

}

public Set getLogin() {

return login;

}

public void setLogin(Set login) {

this.login = login;

}

}

Web.xml

com.oddel.listener.SessionListener

用户登录时调用:

SessionFactory.getInstance().addLogin(httpSession, userid);

页面调用:

import="com.oddel.listener.SessionFactory;

SessionFactory.getInstance().isOnline(userid)

返回true表示用户当前是在线的。

返回false表示用户当前是不在线的。

注:本文摘转自老狼博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值