【监听器篇】4.统计当前在线的用户人数

1.工程说明

a.要求:使用监听器统计在线用户及人数

b.思考:想要统计当前网站上在线的人数,应该通过哪一种方法去实现呢?
      request是一次请求
      application是随整个服务器生而生,亡而亡

      session是一次会话

由上可见,session跟适合用来统计当前的在线用户

我们都知道当用户打开一个页面的时候,服务器就会创建一个session,当用户彻底关闭页面的时候msession就会被销毁.

因此,要统计当前的的在线用户即是写一个session创建销毁的监听器:session被创建就是一个用户来了,session被销毁即是一个用户离开了。所以,用session的创建销毁监听器来统计再适合不过了。

  ok,思路屡清楚了,接下来就撸起袖子干起来。

附上工程的下载地址

2.创建并注册监听器

package listener;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class MySessionListener implements HttpSessionListener {

	//统计在线人数的变量
	private int onlineNumber;
	
	@Override
	public void sessionCreated(HttpSessionEvent arg0) {
		onlineNumber++;
		arg0.getSession().getServletContext().setAttribute("OnlinePeople", onlineNumber);
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		onlineNumber--;
		arg0.getSession().getServletContext().setAttribute("OnlinePeople", onlineNumber);
	}

}

3.index.jsp显示当前的用户人数

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
   <center>
   	<h2>我是一个长的不咋样的主页面</h2>
   	<hr>
   	<h4>当前在线的用户人数: ${OnlinePeople }</h4>
   </center>
  </body>
</html>

4.运行结果


使用另一个浏览器打开,可以看见:


但是为什么我们关闭浏览器的时候,这个在线用户人数不会减少呢?是因为session的生命周期决定的,我们没有去定义session的什么周期的时间,所以session销毁会默认到session过期才销毁的。

  好啦,以上是通过监听session创建和销毁来实现一个在线人数的统计效果。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值