必威体育Betway必威体育官网
当前位置:首页 > IT技术

统计网站用户在线人数

时间:2019-10-15 17:44:31来源:IT技术作者:seo实验室小编阅读:66次「手机版」
 

网站统计

问题:

一个网站如何统计自己用户(这里的用户包含游客)的在线人数?

分析:

首先,我遇见问题喜欢先分析下思路。

  •   用什么技术,可以监听用户访问服务器? (监听器)
  •   用那些技术,可以实时的存储每次登陆服务器的用户数量?   java四大域对象)
  •   用那些技术,可以让用户的数量显示到客户端页面?  (el表达式)

如果,我上面提高的知识,你还不是很了解,建议自行百度学习下。我只做了一个比较小的demo,提供一个思路。

代码中,有很清晰的介绍。

核心内容

项目的目录结构如下:

首先建立一个javaweb项目,在图中的项目结构清晰。(1.代表的是项目名,3.jar包(el表达式的基本包,官网下载就可以了),这个是.jar包下载地址(https://download.csdn.net/download/longyanchen/11250452)),注意事项这个项目需要搭建自己服务器上,直接把项目部署到服务器上就可以了。项目的准备环境,我就不一一描述。(为了防止有的兄弟,把包导错,我就全部传进去了)

InitServletContexListener.java(服务器初始化):
​
package com.cyl.count;

import javax.servlet.Servletcontext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/*
    初始化:
         只有服务器的启动,才会创建servletContext对象。
        用于监听servletContext创建,一旦创建servletContext创建,则设置servletContext中的count值为0;
*/
@WebListener
/*
    这个注解的作用是启动监听,相当于在web.xml配置(
    <listener>
        <listener-class>com.cyl.count.InitServletContexListener</listener-class>
    </listener>
*/
public class InitServletContexListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //获取ServletContext域对象
        ServletContext servletContext = servletContextEvent.getServletContext();
        //给ServletContext域对象,设置count=0
        servletContext.setAttribute("count",0);
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}

​
OnlineNumberHttpsessionListener.java(用户现在监听):
​
package com.cyl.count;

import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * @监听在线人数,监听session的创建和销毁
 *     如果session创建 获取ServletContext中的count++,重新设置
 *     如果session销毁 获取ServletContext中的count--,重新设置
 */
@WebListener
public class OnlineNumberHttpSessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        //1.获取session
        HttpSession session = httpSessionEvent.getSession();
        ServletContext servletContext = session.getServletContext();
        //2.获取counnt值,加1
        int count = (int) servletContext.getAttribute("count");
        count++;
        //3.把servlet存储到servletContext对象中
        servletContext.setAttribute("count",count);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {

        //1.获取session
        HttpSession session = httpSessionEvent.getSession();
        ServletContext servletContext = session.getServletContext();
        //2.获取counnt值,减1
        int count = (int) servletContext.getAttribute("count");
        count++;
        //3.把servlet存储到servletContext对象中
        servletContext.setAttribute("count",count);
    }
}

​

index.jsp(显示用户数量):

​
<%--
  Created by intelliJ IDEA.
  User: cyl
  Date: 2019/6/19 0019
  Time: 21:51
  To change this template use File | settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
      <h1>当前在线人数:${count}</h1>
  </body>
</html>

​

相关阅读

产品经理:用户是怎么成为上帝的?

永远不能忽视用户,不然你连打仗的资格都没有。目录:一、1950s:客户成为上帝二、客户观念与互联网边际成本三、竞争再次浮出水面四、

分析「秦小明」公众号用户故事地图,提出针对性运营策略

笔者在微信改版为信息流的背景下, 开始思考用户在公众号上的使用路径以及用户体验是怎么样的,并根据用户群体特征以及微信改版影响,

扎克伯格欧洲听证 将招募2万人从事用户数据安全保障

A5创业网(公众号:iadmin5)5月23日报道,Facebook公司创建者马克-扎克伯格在布鲁塞尔出席了欧洲议会的听证会。这也是他第三次出现在监

如何理解在线评论的概念、分类、功能以及含义

从20世纪90年代末开始的时间审查的复兴,直接催生了网上评论的热潮,并一直持续到今天。时间回顾和新媒体技术的复兴,共同开启了公民写

小白用户的小米手环体验报告

上次有机会以嘉宾的身份参加了MIUIV6发布会,令人尴尬的是嘉宾的地位不如米粉,米粉在当场就能领取到手环,而嘉宾却没有这个待遇。把粉

分享到:

栏目导航

推荐阅读

热门阅读