实现网站访问人数统计

原创 2015年11月18日 09:36:35

首先我需要一个能访问网站人数的功能,那莫具体来讲就是需要一个能全局存储的,在 java web 中 为啥不用session 因为他代表的试一次会话是一种局部存储, 所以用 servletContext 存储更加合适因为他是全局的, 可以实现ServletContextListener 接口重写里面的2个方法


如果你没懂我说的他们之前区别可以看看

http://www.cnblogs.com/javadu/archive/2011/11/25/2263799.html

http://www.cnblogs.com/javadu/archive/2011/11/25/2263808.html


 contextDestroyed(ServletContextEvent arg0)

contextInitialized(ServletContextEvent arg0)

在初始化中可以读取我存储在磁盘文件那个文件获取个数 因为如果不存储的话 服务器停止他也会没有了 

在销毁的方法中我可以拿到存储在servletcontext中的个数并存储在文件中,这样就可以实现存储保存了

当然这边的方法是多种的你愿意存储在哪就存在哪,数据库 其他都可以


废话了那莫多开始 coding 吧


首先自定义一个我自己的监听器,然后重写2个方法,销毁的方法中是存储在磁盘的路径你可以任意指定,但是你存储在WEN-INF/classes 中他会报没有访问权限的错误

package com.listener;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyListener implements ServletContextListener {

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("推出");
		ServletContext sc = arg0.getServletContext();
		Counter counter = (Counter) sc.getAttribute("counter");
		if(counter!=null) {
			//String filepath = s
			try {
			//	BufferedWriter bw = new BufferedWriter(new OutputStreamWriter())
			//	PrintWriter pw = new PrintWriter("/count.txt");
				PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("D:\\develop\\apache-tomcat-7.0.67\\webapps\\test\\WEB-INF\\classes\\count.txt")));
				pw.println(counter.getCounter());
				pw.flush();
				pw.close();
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("进入");
		ServletContext sc = arg0.getServletContext();
		System.out.println(sc.getResourceAsStream("/WEB-INF/classes/count.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(sc.getResourceAsStream("/WEB-INF/classes/count.txt")));
		try {
			int count = Integer.parseInt((br.readLine()));
			br.close();
			sc.setAttribute("counter", new Counter(count));
		} catch (NumberFormatException | IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

然后就是页面了


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" import="com.listener.*"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		Counter count = (Counter) this.getServletContext().getAttribute("counter");

		count.setCounter(count.getCounter() + 1);

		this.getServletContext().setAttribute("counter", count);
	%>
	<%=count.getCounter()%>
</body>
</html>

实体类
package com.listener;

public class Counter {
	private int counter;

	public void setCounter(int counter) {
		this.counter = counter;
	}

	public int getCounter() {
		return counter;
	}

	public Counter(int counter) {
		// TODO Auto-generated constructor stub
		this.counter = counter;
	}
}

最后不要忘了在web.xml 中配置listener 中让我们自定义的起作用

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
	<listener>
		<listener-class>com.listener.MyListener</listener-class>
	</listener>
	<display-name>Archetype Created Web Application</display-name>
</web-app>


本人不才,希望大神提出指导意见

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/seemyname/article/details/49902489

统计网站访问次数的实现

统计网站访问次数的实现 统计页代码片段
  • chen3775669
  • chen3775669
  • 2016-09-01 10:33:28
  • 492

网站访问量统计

一、建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间(IP_DateTime),...
  • yyh1988923
  • yyh1988923
  • 2012-03-13 19:39:49
  • 929

如何实现网站在线人数以及历史访问人数的统计

准备工作1、新建一个TongJi 的数据库,添加一个 tongji 的表,在表中有一个 Number 的字段,为 int 类型,Number初值为1000;2、新建一个网站;3、新建数据库连接字符串(...
  • hfzsjz
  • hfzsjz
  • 2007-05-24 15:17:00
  • 1028

并发页面访问量统计简单实现

页面访问量统计,可能在上学的时候就讲过如何简单实现,例如在servletContext中保存一个页页面访问次数,然后每访问一次加1;或者每访问一次就把操作记录保存到数据库,这样的处理方式,做做实验就算...
  • wushuchu
  • wushuchu
  • 2016-07-26 16:05:40
  • 7795

如何统计网站的在线人数呢?

如何统计网站的在线人数呢? 首先很简单的思想就是,如果只针对会员用户进行统计,在登录登出时加判断,然后维护一个表(或者其他存储方式)来存储在线会员即可。 但是有个问题就是,对于正常退出的会员当然可...
  • u012639466
  • u012639466
  • 2016-12-13 23:19:56
  • 3600

在线人数统计和总访问量统计

1.新建网站,添加几个窗体。webForm1.aspx ,ViewStateForm.aspx 2.在网站的根目录下添加全局应用程序类“Global.aspx” 。(重要) 3.在“Global....
  • hjingtao
  • hjingtao
  • 2012-06-12 17:08:23
  • 3988

网站访问人数统计

  • 2014年08月19日 11:37
  • 14KB
  • 下载

如何做一个统计网页访问量的功能

在H5中,由于提供了相应的web客户端存储数据的方法,所以不用利用传统的追踪cookie的方法,实现更加高效,简单。        HTML5中两种web存储的方法:        localSt...
  • IT_Surfer
  • IT_Surfer
  • 2015-03-27 21:01:15
  • 8286

如何实现对网站页面访问量的统计?

我用的springmvc,大致讲讲自己的思路吧:要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求,但是需要注意的是,配置拦截器的时候...
  • qq_37667364
  • qq_37667364
  • 2018-02-14 19:07:37
  • 500

网站在线人数以及历史访问人数的统计代码

  l来自http://hi.baidu.com/mydelicious/blog/item/22b10d38cb14ef25b8998fbb.html 准备工作1、新建一个TongJi 的数据库,添...
  • cqunknown
  • cqunknown
  • 2008-05-29 21:48:00
  • 5877
收藏助手
不良信息举报
您举报文章:实现网站访问人数统计
举报原因:
原因补充:

(最多只允许输入30个字)