统计当前在线用户数量

五迷三道 提交于 2020-03-15 08:08:08

1、ServletContext记录个数

package cn.demo.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyServletContextListener implements ServletContextListener {

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// 容器一启动ServletContext对象就会创建,该方法就会执行
		System.out.println("容器创建了...");
		ServletContext servletContext = sce.getServletContext();
		int count = 0;
		servletContext.setAttribute("count", count);
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// 容器销毁ServletContext对象就销毁,该方法就会执行
		System.out.println("容器销毁了...");

	}

}

web.xml配置
 
  <listener>
  	<listener-class>cn.demo.listener.MyServletContextListener</listener-class>
  </listener>

2、监听session创建

package cn.demo.listener;

import java.util.Date;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * 监听session个数
 * 
 */
public class MySessionListener implements HttpSessionListener {

	@Override
	public void sessionCreated(HttpSessionEvent se) {
		// 当服务器创建一个session的时候该方法执行
		System.out.println("session被创建了..." + se.getSession().getId() + "..." + new Date());
		ServletContext servletContext = se.getSession().getServletContext();
		int count = (Integer) servletContext.getAttribute("count");
		count++;
		servletContext.setAttribute("count", count);
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		System.out.println("session被销毁了..." + se.getSession().getId() + "..." + new Date());
		ServletContext servletContext = se.getSession().getServletContext();
		int count = (Integer) servletContext.getAttribute("count");
		count--;
		servletContext.setAttribute("count", count);
	}

}

web.xml
  <listener>
  	<listener-class>cn.itcast.listener.MySessionListener</listener-class>
  </listener>

3、页面显示

showSessionCount.jsp显示

<body>
	<h2 align="center">当前服务器session个数:${applicationScope.count}</h2>
</body>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!