zoukankan      html  css  js  c++  java
  • 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();
          }
  • 相关阅读:
    如何在IE, Firefox, Opera浏览器中支持页面弹出并回传数据
    访问IIS 6.0 web服务时, 显示service unavailable
    新blog新气象
    jQuery 参考手册 选择器
    如何在博客中添加目录并链接到当前页面中的某个位置?
    Excel中左中右截取及去空格
    jQuery 遍历 slice() 方法
    如何知道一个工作簿中有多少个工作表?
    jQuery 选择器
    邮政编码查询网址
  • 原文地址:https://www.cnblogs.com/dreamrobot/p/11904818.html
Copyright © 2011-2022 走看看