使用ServletRequestListener监听器实现对网站访问流量的监控

news/2024/5/9 10:19:44/文章来源:https://blog.csdn.net/cchulu/article/details/104740346

ServletRequestListener

ServletRequestListener接口能监听每一个request的请求的创建和销毁,用来记录网站的浏览量非常合适,可以按照每一分钟来统计有多少request请求,请求产生的数据技术则可以放在ServletContext全局对象中进行设置和读取
实现requestInitialized()方法

	@Overridepublic void requestInitialized(ServletRequestEvent arg0) {HttpServletRequest hsr= (HttpServletRequest)arg0.getServletRequest();//过滤统计请求,避免多计算String url= hsr.getRequestURL().toString();if(url.endsWith("/reqt")){return;}//获取ServletContextServletContext sc =arg0.getServletContext();List<String> timelist =(List)sc.getAttribute("timelist");List<Integer> valuelist =(List)sc.getAttribute("valuelist");Date now =new Date();SimpleDateFormat sdf =new SimpleDateFormat("MM-dd HH:mm");String min= sdf.format(now);if(timelist.indexOf(min)==-1){//新的一分钟timelist.add(min);valuelist.add(1);sc.setAttribute("timelist", timelist);sc.setAttribute("valuelist", valuelist);}else{int index =timelist.indexOf(min);int value=valuelist.get(index);valuelist.set(index, value+1);sc.setAttribute("valuelist", valuelist);}		}

ServletContextListener

实现该接口,在web服务初始化的时候,可以将每分钟的访问量数据list和时间变化的list放在ServletContext对象中作为一个全局变量
ServletContext初始化初始化时的操作:

	@Overridepublic void contextInitialized(ServletContextEvent arg0) {ServletContext sc = arg0.getServletContext();List timelist =new ArrayList();List valuelist =new ArrayList();sc.setAttribute("timelist", timelist);sc.setAttribute("valuelist", valuelist);	}

剩下需要做的是有一个页面来显是网站网站访问量的数据,并且实现实时一秒刷新一次,实时显示每分钟的访问量,需要用的到一个servlet,处理网站流量统计界面的后台请求
界面使用白的开源项目echarts来展示数据效果,前台的请求可以用jquery的$.ajax()实现数据交互

servlet如下:
需要用到阿里款的fastjson jar包,实现对象的序列化转成json字符串

@WebServlet(urlPatterns = "/reqt")
public class ReqtServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext sc = req.getServletContext();List<String> timelist = (List) sc.getAttribute("timelist");List<Integer> valuelist = (List) sc.getAttribute("valuelist");Map<String,List> map =new HashMap<String,List>();map.put("timelist", timelist);map.put("valuelist", valuelist);//fastjson 对象序列化String json =JSON.toJSONString(map);resp.getWriter().println(json);}

在数据统计页面引入js文件和画一个图标容器的对象

<script src="js/echarts.min.js"></script>
<script src="js/jquery.3.3.1.min.js"></script>
<body><div id="main" style="width: 600px;height:400px;"></div>
</body>
<script type="text/javascript">function showEchart() {$.ajax({url : "/reqt",type : "get",dataType : "json",success : function(json) {console.log(json);// 以下这段代码时从echarts官网上复制过来的demovar myChart = echarts.init(document.getElementById('main'));// 指定图表的配置项和数据var option = {title : {text : '网站访问流量统计'},tooltip : {},legend : {data : [ '访问量' ]},xAxis : {data : json.timelist},yAxis : {},series : [ {name : '访问量',type : 'line',data : json.valuelist} ]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);},error : function() {}});}//js定时器函数,1000是一秒,意思是一秒执行该函数一次window.setInterval("showEchart()", 1000);
</script>

最终实现的效果如下:
在这里插入图片描述

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

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

相关文章

Win:从 Microsoft官方网站下载官方正版ISO镜像文件(以Windows10为例,图文教程)

Win&#xff1a;从 Microsoft官方网站下载官方正版ISO镜像文件(以Windows10为例&#xff0c;图文教程) 目录 下载过程 1、先下载工具 2、再下载ISO镜像文件 3、选择语言、版本 4、直接选择保存的位置&#xff0c;然后会立马下载 5、创建Win10介质 6、哈哈&#xff0c;大…

垂直广告是什么意思_Banner是什么意思,网站banner设计与广告怎么做?

在很长一段时间&#xff0c;作为网站的运营人员&#xff0c;我们花费更多的时间在网站流量的获取上&#xff0c;特别是对于一些个人站长而言&#xff0c;我们有的时候很少思考流量的变现问题。 特别是一些广告主&#xff0c;在自身网站投放的Banner广告&#xff0c;我们几乎很少…

python3监控网站状态

前面已经写过Python3发邮件&#xff0c;Python发微信的文章了。直接导入即可。 import configparser,requests from time import sleep import WeChat,Mail,datetimeclass checkurl(object):def __init__(self,file):self.filefileself.cfgconfigparser.ConfigParser()def cfg_…

PHPWAMP乱码一键解决,PHP乱码通用解决方案/网站乱码的多种原因分析

所有引起网页乱码的原因&#xff0c;我将其划分以下五大类1、服务器强制编码造成的乱码&#xff08;此乱码的表现&#xff1a;通常只会引起某个PHP版本乱码&#xff08;因为默认配置不同&#xff09;&#xff0c;建议使用PHPWAMP内置的常用工具万能乱码修复器&#xff0c;该修复…

在一台服务器上搭建多个网站的方法(Apache版)

Apache的配置文件一般放置在/etc/httpd/conf文件夹下&#xff0c;httpd.conf是它的主配置文件&#xff0c;在进行配置时可以将虚拟主机的配置文件单独配置&#xff0c;如取名为vhost.conf&#xff0c;然后再http.conf中加入一行包含的语句“Include /etc/httpd/conf/vhost.conf…

网站前后台源代码_顺义法院案例:修改首都航空网页源代码,取消航空意外险,又将此方法传授他人,犯破坏计算机信息系统罪和传授犯罪方法罪,数罪并罚...

顺义法院案例&#xff1a;修改首都航空网页源代码&#xff0c;取消航空意外险&#xff0c;又将此方法传授他人&#xff0c;犯破坏计算机信息系统罪和传授犯罪方法罪&#xff0c;数罪并罚一、破坏计算机信息系统罪破坏计算机信息系统罪规定于《刑法》第286条&#xff0c;该罪有三…

小型的搜索引擎设计_高端的网站设计是从哪些方面吸引用户

一个好的企业网站对于一个企业来说能够起到非常大的作用&#xff0c;企业宣传、产品介绍、拓展市场等等&#xff0c;当然每一个企业都希望自己的网站能够发挥更大的价值&#xff0c;但是在现有的一些企业网站中普遍存在一个问题就是众多的企业网站虽然拥有好看的页面&#xff0…

通过webDAV来管理网站上的资源

版权声明&#xff1a;原创(幸福正在延续中......)&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://hongwei.blog.51cto.com/533436/182799WebDAV&#xff08;Web Distributed Authoring and Versi…

HttpWebRequest自动登录网站并获取网站内容(不包含验证码的网站)

可以使用 Visual Sniffer&#xff08;百度搜索&#xff09; 来捕捉提交的数据信息&#xff1a;1. 访问你需要站外提交的页面&#xff0c;比如 CSDN 登陆页 http://www.csdn.net/member/UserLogin.aspx2. 填写好需要的资料&#xff0c;比如用户名和密码&#xff0c;3. 打开 Visu…

[Ajax]十个优秀的 Ajax/Javascript实例网站

原始地址&#xff1a;http://supercode.appspot.com/post/13 1.Ajax Rain AjaxRain有很多完美整合AJAX, CSS, DHTML 或 Javascript的实例&#xff0c;有一些Demo的确值得你去看一看&#xff0c;即使你不是网页设计(开发)师。 2.Ajax Daddy Ajax Daddy收集了大量漂亮的Web2.0工…

初识Visual Studio 2010(四)—— 创建ASP.NET网站

启动VS后&#xff0c;创建一个ASP.NET网站&#xff0c;注意是ASP.NET Web Site不是ASP.NET MVC2 Web Application&#xff0c;从下图可以看到Solution Explorer中的Project的目录结构有比较大的变化&#xff1a; 1&#xff09;实现了用户登录、注册和修改密码的功能 2&#xff…

域名更换 html,网站更换域名跳转单页

#样式&#xff1a;*.使用方法&#xff1a;新建一个index.html文件.把以下代码复制进去.然后把第22和43行的域名改成你需要跳转的即可&#xff01;网站域名更换通知 - 饼干网secs饼干网络跳转至双虹云代挂立即前往 secure安全加密 function alertSet(e) {document.getElementByI…

网站所需服务器,单位网站所需服务器

单位网站所需服务器 内容精选换一换简要介绍Web Bench是Linux中被广泛使用的网站压力测试工具&#xff0c;同时支持HTTPS静态网站和动态网站。编写语言&#xff1a;C/C一句话概述&#xff1a;网站压力测试工具建议的版本建议使用版本为1.5。云服务器要求本文以云服务器KC1实例测…

一个有意思的网站 markup点io

为什么80%的码农都做不了架构师&#xff1f;>>> 遇到一个有意思的网站(浏览器plugin)&#xff0c;不知道怎么做的&#xff0c;也不知道是否已经广为人知。有时间研究研究开发中文版的可行性。 抓了几张图片&#xff0c;可是不知道怎么加入博客&#xff0c;没办法只…

用confluence完成室项目管理网站的初步搭建

一、安装sql server 安装sql server 2005 及sp2补丁  将sql server的服务端口从1433改为2433  安装confluence的数据库及用户&#xff0c;数据库名称为confluence&#xff0c;数据库文件放在d:\conf-db目录中  建立用户conf&#xff0c;给予confluence数据库的所有权限&a…

夫唯seowhy调研室全站vip课程

夫唯seowhy论坛是国内最好的seo教学论坛&#xff0c;学员更是超过了十多万人&#xff0c;为社会提供了很多seo方面的人才&#xff0c;那么他的成功秘诀在哪里呢&#xff0c;他教的都是些什么课程呢&#xff0c;想知道吗&#xff0c;不用注册会员&#xff0c;seowhy论坛全站vip教…

pb程序怎么发布到iis_怎么将本地做好的网站部署到服务器上?

例如自己自在本地开发好了一个web网站&#xff0c;如何部署到云服务器上&#xff0c;让别人访问&#xff1f;请大神指教网站如果在本地已经配置好后&#xff0c;需要发布到服务器里的话&#xff0c;具体要怎么做呢&#xff01;首先在本地配置的话&#xff0c;只需要配置ip地址就…

Github网站加载不全,css读取失败

最近在公司里访问Github网站的时候&#xff0c;可能会遇到网站响应超时&#xff0c;图片加载不出&#xff0c;排版错误等情况&#xff08;大部分情况下是可以正常打开的&#xff09;。我就遇到了这样的问题&#xff0c;所以在此和大家分享&#xff0c;希望可以帮到有同样困扰的…

京东前端:PhantomJS 和NodeJS在网站前端监控平台的最佳实践

http://www.infoq.com/cn/articles/practise-of-phantomjs-and-nodejs-in-jingdong 1. 为什么需要一个前端监控系统 通常在一个大型的 Web 项目中有很多监控系统&#xff0c;比如后端的服务 API 监控&#xff0c;接口存活、调用、延迟等监控&#xff0c;这些一般都用来监控后台…

FLASH PLAYER 谷歌浏览器浏览网站无法正常显示的问题

大家使用谷歌浏览器访问网站时&#xff0c;有没有遇到如下情况&#xff1a; 谷歌浏览器通知你需要安装Adobe Flash Player&#xff0c;即使你按照提示安装了Adobe Flash Player&#xff0c;关闭浏览器重新 访问含有Adobe Flash Player的页面是&#xff0c;页面还会提示&#x…