javaweb中实现在线人数统计

Posted 梦想家ROBOT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaweb中实现在线人数统计相关的知识,希望对你有一定的参考价值。

session并不是浏览器关闭时销毁的,而是在session失效的时候销毁下列代码就是监测session创建、销毁

 

package com.my.count;

import javax.servlet.http.*;

public class SessionCounter implements HttpSessionListener {

    private static int activeSessions = 0;
    //session创建时执行
    public void sessionCreated(HttpSessionEvent se) {
        activeSessions++;
    }
    //session销毁时执行
    public void sessionDestroyed(HttpSessionEvent se) {
        if (activeSessions > 0)
            activeSessions--;
    }
    //获取活动的session个数(在线人数)
    public static int getActiveSessions() {
        return activeSessions;
    }

}
技术图片

 

接下来就是配置web.xml

<listener>
      <listener-class>
          com.my.count.SessionCounter  //这里是包名加类名
      </listener-class>
  </listener>
技术图片

 

接下来就可以在jsp页面中使用

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.my.count.SessionCounter"%>
<%
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 ‘ApplicationTest.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>
        在线人数为:<%=SessionCounter.getActiveSessions() %>
  </body>
</html>
技术图片

不用jsp页面 写成接口代码如下:

 

package com.wangyun.web.controllers;

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

public class SessionCounter implements HttpSessionListener {

     static int activeSessions = 0;
    //session创建时执行
    public void sessionCreated(HttpSessionEvent se) {
        activeSessions++;
    }
    //session销毁时执行
    public void sessionDestroyed(HttpSessionEvent se) {
        if (activeSessions > 0)
            activeSessions--;
    }
    //获取活动的session个数(在线人数)
    public static int getActiveSessions() {
        return activeSessions;
    }

}
技术图片
   /**
  	 * 在线用户人数
  	 * @throws IOException 
  	 * @throws ServletException 
  	 */
      @RequestMapping(value="user_online", method=RequestMethod.POST, produces="text/json;charset=utf-8")
  	@ResponseBody
  	public Object user_online() throws ServletException, IOException {
  			JSONObject data = new JSONObject();
  			int number=SessionCounter.activeSessions;
  			data.put("msg",number);
  			return data.toString();
      }
技术图片

 

以上是关于javaweb中实现在线人数统计的主要内容,如果未能解决你的问题,请参考以下文章

java web用监听器listener简单的实现在线统计人数

如何统计网站在线人数?

javaweb

全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段

Javaweb 工程中 监听器 listener 讲解

利用php比较精确的统计在线人数的办法