使用监听器实现在线客户统计
统计连接在应用上的客户端数量。客户端的唯一标识就是 IP,只需要对连接到服务器上
的 IP 数量进行统计,就可统计出客户端的数量。网上很多这方面的文章都是只监听了session,即当session创建时,在线客户端的数量就+1,session销毁时,在线客户端的数量就-1,这种统计的方法不正确,用户在同一台机器上打开两个不同的浏览器访问系统时,系统会创建两个session对象,如果按照上面方式统计的话当前在线客户有两个,而实际上只有一个,因此需要通过客户端的ip地址来判断的方式更加准确。
1.创建ServletContext 监听器
在 ServletContext 初始化时创建一个Map对象,该Map对象用于存放 IP 信息,并将创建好的 Map 存放到 ServletContext 域中。Map的key为客户端 IP,而 value 则为该客户端 IP 所发出的session对象组成的 List。
package com.monkey1024.listener;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSession;
public class MyServletContextListener implements ServletContextListener {
/*
* 监听ServletContext 初始化时创建一个Map对象
*/
@Override
public void contextInitialized(ServletContextEvent sce) {