Java实现网站请求流量分析统计

news/2024/5/14 23:22:13/文章来源:https://blog.csdn.net/qq_35207086/article/details/115737364

 

如上图所描绘的,在不断刷新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>

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_771779.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从vancl看垂直商业网站的崛起

如果说2007年IT业内的几大事件&#xff0c;卖衬衣的卖火了&#xff0c;这肯定是2007年的重大事件之一。提起卖衬衣的&#xff0c;大家肯定会想到的是PPG&#xff0c;但我为什么不拿PPG做标题呐&#xff1f;我认为PPG并不是真正的互联网公司&#xff0c;PPG只是打了一个网络直销…

55个漂亮的蓝色风格网站设计作品欣赏(上篇)

蓝色是光的三原色中的一元&#xff0c;是最冷的色彩&#xff0c;非常纯净&#xff0c;通常让人联想到海洋、天空、水、宇宙。纯净的蓝色表现出一种美丽、冷静、理智、安详与广阔。今天&#xff0c;本文收集了一些优秀的蓝色风格的网站设计作品与大家分享&#xff0c;一起欣赏。…

大型电子商务网站架构求解

这是一个技术提问帖,更是一个技术回复分享帖!希望有经验的朋友能够不吝赐教,让我们能在回复中分享到技术!同样希望管理员同志不要将此贴移出首页区,在讨论中学习和分享知识也是一种学习的方式,不是吗?---------------------------------华丽的分割线-------------------------…

Apache主导全美100大网站

随着同 IIS 的竞争以及 Lighttpd 的崛起&#xff0c;关于 Apache 市场下滑的声音不绝于耳&#xff0c;但 Pingdom 的统计表明&#xff0c;Apache仍然主导全美100大网站&#xff0c;占据了49%的市场份额。在 Pingdom 检测的众多网站中&#xff0c;Web服务器的使用五花八门&…

Wordpress Seo 优化的几个建议

WordPress SEO一直是大家很关系的问题&#xff0c;我们也曾经发过WordPress SEO 完全指南&#xff0c;那篇文章系统而详细的见解了如何对WordPress进行优化&#xff0c;今天Wopus中文平台的SEO顾问swsw007给大家分享他的一些WordPress SEO的技巧。一、3步把wordpress打成seo良好…

年度盛宴——2012年排名前20的 HTML5 应用和网站作品

过去的2012年&#xff0c;Web 领域有众多新变化&#xff1a;HTML5 将在2014年成为推荐标准&#xff1b;W3C 任命了4位新编辑来管理 HTML5 规范并托管到 Github 上面&#xff1b;WHATWG 继续致力于活动的 HTML 标准&#xff08;Living Standard&#xff09;。 您可能感兴趣的相关…

android客户端和网站数据交互的实现(基于Http协议获取数据方法)

android客户端一般不直接访问网站数据库&#xff0c;而是像浏览器一样发送get或者post请求&#xff0c;然后网站返回客户端能理解的数据格式&#xff0c;客户端解析这些数据&#xff0c;显示在界面上&#xff0c;常用的数据格式是xml和json。 可以理解客户端其实是一个你自己定…

ASP.NET网站管理工具的初始配置

ASP.NET 网站管理工具是ASP.NET2.0以来VS提供的操作Web.config的GUI.使用起来比直接编辑Web.config方便一些.但初始化配置时会遇到以下麻烦. 参考几个blog和俺自己的实验,总结点东西写写. 1、打开ASP.NET网站管理工具 有两个方法可以打开这个工具。 &#xff08;1&#xff…

网站加速将由CDN技术实现

2019独角兽企业重金招聘Python工程师标准>>> 过去的两年里,人们熟悉互联网CDN(内容分发网络)越来越深入的理解和印象。如果以前的用户下载信息,软件,甚至玩网络游戏已经在参考的言语CDN的技术,所以现在人们分享视频,视频点播流媒体或广播更依赖加。CDN毫无疑问,CDN技…

idc云服务器网站功能,idc云服务器网站

idc云服务器网站 内容精选换一换在云服务器上搭建网站后&#xff0c;部分客户通过本地网络访问网站时出现偶发性无法访问的情况。确认客户使用的本地网络。若客户的本地网络是NAT网络(本地主机通过NAT功能使用公网IP地址访问弹性云服务器)&#xff0c;可能会导致该问题。若客户…

工作系列之可爱屋早教中心网站重构

2010年下半年&#xff0c;经过朋友的推荐&#xff0c;有幸参与到可爱屋早教中心网站重构项目中。可爱屋早教中心在2010年业务经过一次大的升级&#xff0c;急需扩展招生渠道&#xff0c;因此网络招生自然而然提上了日程。他们的官网由以前的工程师建设好以后&#xff0c;托管在…

创建模板_怎么用模板创建自己的网站

其一&#xff0c;在自己的网站上&#xff0c;首要任务就是购买一个域名。域名的网站是非常重要的&#xff0c;如果你想买一个好的域名&#xff0c;所以在购买前是需要考虑域名&#xff0c;一般来说&#xff0c;在购买时选择主域比较好&#xff0c;特别的人可以去知道更多关于的…

如何给网站瘦身?图文并茂的前端性能优化指南

提高网站的速度对网站的成功有巨大的影响&#xff0c;因为网站的加载速度直接影响到用户体验和搜索引擎排名。Browser Diet 是一个非常好的指南&#xff0c;列出了前端性能优化的各种技巧和工具。 您可能感兴趣的相关文章2012年最佳 Web 前端开发工具和框架史上最全的浏览器 CS…

关闭81端口导致的部分网站无法访问

今天同事去天鹅湖百盛做培训&#xff0c;结果百盛办公电脑均无法登录我们的商务数据系统&#xff0c;但访问其它常用网站包括QQ都正常&#xff0c;杀软、本地防火墙、Winsock LSP都试过&#xff0c;同事搞了很久没搞定打电话过来&#xff0c;准备去现场看看&#xff0c;百度地图…

SharePoint 2007 Restore Site Collection遇到的网站集Url缓存问题【已解决】

这个问题比较奇怪&#xff0c;可以说是SharePoint的一个BUG吧。请看下图&#xff1a; 在Site Collection List里面看不到正常的网站集信息。但是这个Url缺存在于此。 这是正常网站集选择时显示的信息&#xff1a; 在做Site Collection的Restore时候碰到如下错误&#xff1a; 错…

【转载】nginx实现网站负载均衡(windows+IIS负载实测)

如果你关注过nginx&#xff0c;必定知道nginx这个软件有什么用的&#xff0c;如果你的网站访问量越来越高&#xff0c;一台服务器已经没有办法承受流量压力&#xff0c;那就增多几台 服务器来做负载吧。做网站负载可以买硬件设备来实现&#xff0c;比如F5,不过价格就几十万到上…

转:大型网站架构系列:消息队列(二)

本文是大型网站架构系列&#xff1a;消息队列&#xff08;二&#xff09;&#xff0c;主要分享JMS消息服务&#xff0c;常用消息中间件&#xff08;Active MQ&#xff0c;Rabbit MQ&#xff0c;Zero MQ&#xff0c;Kafka&#xff09;。【第二篇的内容大部分为网络资源的整理和汇…

Outlook 使用anywhere 提示安全证书上的名称无效或与网站的名称不相符

Outlook 使用anywhere 提示安全证书上的名称无效或与网站的名称不相符 使用anywhere方式配置outlook 2013时&#xff0c;提示安全证书上的名称无效或与网站的名称不相符。首先点击安全警告提示的右下角查看证书&#xff0c;如下图&#xff0c;提示证书是颁发给AD计算机的&#…

Servlet过滤器实现网站访问计数器功能

实现网站在线访问计数器功能&#xff0c;网站的初始值设置为1000&#xff08;1&#xff09;创建CountFilter的类&#xff0c;实现javax。servlet.Filter接口&#xff0c;是一个过滤器对象&#xff0c;通过过滤器实现统计网站人数功能&#xff1a;package com.lixiyu; import ja…

利用Google高级搜索功能做SEO调研

Google高级搜索提供了输入项、网页语言、网页区域、文件格式、日期、关键词位置、网域、权限等自定义搜索结果。重点说说日期和关键词位置&#xff0c;通过分析老黑认为这两项功能可以用于SEO的研究分析。1、日期Google高级搜索中日期的自定义项包含&#xff1a;任意时间、过去…