统计当前在线用户数量
博客专区 > Bob2100 的博客 > 博客详情
统计当前在线用户数量
Bob2100 发表于1年前
统计当前在线用户数量
  • 发表于 1年前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 每个浏览器访问网站,都会在服务器中创建一个session,可以通过统计session的个数大致推导在线用户数

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>
共有 人打赏支持
粉丝 6
博文 46
码字总数 9443
×
Bob2100
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: