如上图所描绘的,在不断刷新test.html请求页面时,上图total.html页面会实时的更新(1秒响应更新一次),折线图会实时进行上下变动。其中需要导入echarts.min.js和jquery-3.5.1.min.js和fastjson-1.2.53.jar包。

0.首先是创建RequestServlet这个类,创建一个时间集合和与之相对象的值集合,就是每一时间段,有多少的请求数量。比如上图19:14时间段有20多个请求量。代码如下:

package com.wei.total;import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.alibaba.fastjson.JSON;/*** Servlet implementation class RequestServlet*/
@WebServlet("/req")
public class RequestServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public RequestServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse*      response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubServletContext context = request.getServletContext();// 获得全局对象List<String> timeList = (List<String>) context.getAttribute("timeList");List<Integer> valueList = (List<Integer>) context.getAttribute("valueList");response.setContentType("text/html;charset=utf-8");
//      response.getWriter().println(timeList.toString());
//      response.getWriter().println("<br/>");
//      response.getWriter().println(valueList.toString());Map resultMap=new HashMap();resultMap.put("timeList",timeList );resultMap.put("valueList",valueList );String json= JSON.toJSONString(resultMap);response.getWriter().println(json);}}

1.然后是RequestTotalListener这个类实现  ServletContextListener,ServletRequestListener两个接口,代码如下:

package com.wei.total;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;public class RequestTotalListener implements ServletContextListener,ServletRequestListener {@Overridepublic void requestDestroyed(ServletRequestEvent sre) {// TODO Auto-generated method stub}@Overridepublic void requestInitialized(ServletRequestEvent sre) {HttpServletRequest request=(HttpServletRequest)sre.getServletRequest();String url=request.getRequestURL().toString();if (url.endsWith("/req")==true) {return;}// TODO Auto-generated method stub//timeList: 10:02,10:03,10:04//ValueList  5       20    15List<String> timeList=(List)sre.getServletContext().getAttribute("timeList");List<Integer> valueList=(List)sre.getServletContext().getAttribute("valueList");Date date =new Date();SimpleDateFormat sdfDateFormat=new SimpleDateFormat("HH:mm");String time=sdfDateFormat.format(date);//得到当前时间//10:05if (timeList.indexOf(time)==-1) {//查找对应的数据集合中是否存在,时间是否存在,不存在返回结果为-1timeList.add(time);valueList.add(1);sre.getServletContext().setAttribute("timeList", timeList);sre.getServletContext().setAttribute("valueList", valueList);}else {int index=  timeList.indexOf(time);int value=valueList.get(index);valueList.set(index,value+1);sre.getServletContext().setAttribute("valueList", valueList);}}@Overridepublic void contextDestroyed(ServletContextEvent sce) {// TODO Auto-generated method stubServletContextListener.super.contextDestroyed(sce);}@Overridepublic void contextInitialized(ServletContextEvent sce) {// TODO Auto-generated method stubList timeList=new ArrayList();List valueList=new ArrayList();sce.getServletContext().setAttribute("timeList", timeList);sce.getServletContext().setAttribute("valueList", valueList);}
}

2.进行数据统计页面total.html的编写:代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/echarts.min.js"></script>
<script type="text/javascript" src="js/jquery-3.5.1.min.js"></script>
</head>
<body><!-- 为 ECharts 准备一个具备大小(宽高)的 DOM --><div id="main" style="width: 600px; height: 500px;"></div><script type="text/javascript">function showChart(){$.ajax({url:"./req",type:"get",dataType:"json",success:function(json){console.log(json.timeList);console.log(json.valueList);// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));//得到图表对象// 指定图表的配置项和数据var option = {title : {text : '请求流量分析统计'},tooltip : {},legend : {data : [ '访问量' ]},xAxis : {data : json.timeList},yAxis : {},series : [ {name : '访问量',type : 'line',//bar柱状图,line折线图data : json.valueList} ]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);}})}window.setInterval("showChart()",1000);//1秒向浏览器刷新一次结果</script>
</body>
</html>

3.测试页面,可以准备多个测试页面,一定要注意html页面一定要在webcontent下进行创建,发布后,打开进行多次点击,可以发现total.html的折线图会实时的进行变化,也可以换成树状图等图。代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>我是第一个测试页面</h1>
<h2>I am test page one</h2>
</body>
</html>

Java实现网站请求流量分析统计相关推荐

  1. 大数据离线---网站日志流量分析系统(1)---简介及框架

    本次介绍网站日志流量分析系统,首先是简介和架构.后面会对架构中需要的每个模块的进行逐个介绍.本篇主要分为两个部分 网站日志流量分析系统简介 整体技术流程和架构 1. 网站日志流量分析系统简介 1.1点 ...

  2. 网站日志流量分析系统之(日志收集)

    一.概述 网站日志流量分析系统之(日志埋点)这里我们已经将相关数据通过ajax发送至日志服务器,这里我只用了一台日志服务器(本机Windows环境),日志收集主要分为以下几个步骤: ①日志服务器集结合 ...

  3. Day25_20180602_网站日志流量分析项目06:数据分析的实现及任务调度框架

    一.数据仓库模型 | valid | string | | | ip | string | | | user_id | string | | | time | string | | | daystr ...

  4. 大数据离线---网站日志流量分析系统---日志数据原始信息

    这里式日志数据的原始信息 194.237.142.21 - - [18/Sep/2013:06:49:18 +0000] "GET /wp-content/uploads/2013/07/r ...

  5. PHP解决网站大流量与高并发

    1:硬件方面 普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的.主要影响服务器的速度 有:网络-硬 ...

  6. PHP如何解决网站大流量与高并发

    首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻 ...

  7. MOOC网站访问日志分析

    阿里云开放实验室 https://edu.aliyun.com/lab/courses 选择一个日志分析项目为例: 实验详情: 实验概述:网站访问日志是用户在访问网站服务器时产生的日志,它包含了各种原 ...

  8. 数据分析---网站日志流分析

    文章目录 数据分析平台介绍 网站流量分析项目的一些问题 1.数据处理流程 1.数据采集 2.数据预处理 3.数据入库 4.数据分析(ETL) 5.数据展现 2.mr程序进行数据预处理理论方面 3.流量 ...

  9. MapReduce--实现手机流量分析

    实现手机流量分析 1.需求 2.分析:逻辑:设计 (1)==需求一== step1:`不论是写SQL还是写MR,一般都先把结果的格式先列出来` step2:`有没有分组或者排序:决定Map输出的Key ...

最新文章

  1. 亿级浏览型网站静态化架构演变
  2. 如何让低版本IE浏览器支持HTML5和CSS3
  3. vba excel 开发游戏_为什么要学习VBA?
  4. wordpress on Zencart (WOZ) Ultimate SEO URLs 静态化
  5. 魔界的青蔷薇也能在人间开放了
  6. 搭建分布式环境:Dubbo+Zookeeper
  7. VMware发布虚拟云网络创新技术,连接和保护分布式多云企业
  8. 一个API接口的例子,包括单元测试
  9. 真正的OKR是什么?
  10. Github | 人脸识别手册 (分类论文集)
  11. yolov1-v5学习笔记及源码解读
  12. 奚江华的几篇Silverlight文章
  13. autofac文档:适配器和装饰器
  14. 计算机属性资源管理器已停止工作,Win7资源管理器老是停止工作怎么办?资源管理器已停止工作解决方法...
  15. html上绑定回车事件,js/jquery中input 绑定回车enter事件的代码
  16. 解决谷歌无法加载扩展程序
  17. (附源码)ssm考生评分系统 毕业设计 071114
  18. 雷观(二十五):定义和分析问题,往往比解决具体问题更重要
  19. 数字图像处理(第二章)
  20. QWidget/QToolBar::addAction的设计真是绝妙

热门文章

  1. 科技青年 | 中科院高君宇:本科双学位,直博中科院,好饭不怕晚,学术成果丰...
  2. 偏最小二乘(PLS)原理分析Python实现
  3. KepOPC实现CAN设备的OTIT互操作!
  4. java 连接OPC服务器之 utgard 连接 KepServer
  5. BootStrap-CSS样式_布局组件_响应式导航栏(移动设备折叠随宽度增加展开)
  6. Spring Security OAuth2.0认证授权
  7. 概率论基础(1)古典和几何概型及事件运算
  8. c++ Templates读书笔记 9-12章
  9. 1.Ubuntu Linux 简介
  10. 大起大落,蚂蚁上市被叫停,蚂蚁的程序员们怎么样了?