java如何统计网站访问量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何统计网站访问量?相关的知识,希望对你有一定的参考价值。

最近做了一个java web项目,用servlet+jsp做的,网站是不需要用户登录的,我需要在后台查看网站的访问量,请问如何实现访问量的统计?要求一个IP在一天内的访问只算一次。

  步骤一、建一个表,表名任意,这里取名为:visitorcounter,表的结构如下所示:
  +-------+------------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+------------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| vdate | date | NO | | 2000-01-01 | |
| vnum | int(11) | NO | | 0 | |
+-------+------------------+------+-----+------------+----------------+
  步骤二、建立一个java类,名字也为:visitorcounter,类的内容如下:
  package com.hdzx.pub;
  import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Date;
  public class VisitorCounter
private final static String TABLE_NAME = "visitorcounter";
private static String today = null;
private static long today_num = 0;
private static long total_num = 0;
//加载访问量
public static void loadNum()
if(total_num<1)
loadTotalNum();
if(today_num<1)
loadToadyNum();

//加载今日访问量
private static void loadToadyNum()
// TODO Auto-generated method stub
DBConnect db = null;
ResultSet rs = null;
if(today==null)
today = getTodayDate();
String sql = "select vnum from "+TABLE_NAME+" where vdate=\'"+today+"\'";
try
db = new DBConnect();
rs = db.executeQuery(sql);
if(rs.next())
today_num = rs.getLong("vnum");

else

sql = "insert into "+TABLE_NAME+"(vdate,vnum) values(\'"+today+"\',0)";
db.executeUpdate(sql);
today_num = 0;

catch (Exception e)
// TODO: handle exception
today_num = 0;
System.out.println("com.hdzx.pub~VisitorCounter.incTotalCounter:获得访问人数");


//加载总访问量
private static void loadTotalNum()
// TODO Auto-generated method stub
// TODO Auto-generated method stub
DBConnect db = null;
ResultSet rs = null;
if(today==null)
today = getTodayDate();
String sql = "select vnum from "+TABLE_NAME+" where id=1";
try
db = new DBConnect();
rs = db.executeQuery(sql);
if(rs.next())
total_num = rs.getLong("vnum");

else

total_num = 0;

catch (Exception e)
// TODO: handle exception
total_num = 0;
System.out.println("com.hdzx.pub~VisitorCounter.incTotalCounter:获得访问人数");


//增加总的访问量
private static int incTotalCounter()
int k = 0;
DBConnect db = null;
loadNum();
total_num = total_num+1;
String sql = "update "+TABLE_NAME+" set vnum="+total_num+" where id=1";
try
db = new DBConnect();
k = db.executeUpdate(sql);
catch (Exception e)
// TODO: handle exception
System.out.println("com.hdzx.pub~VisitorCounter.incTotalCounter:增加访问人数");

return k;

//增加今日的访问量
public static int incTodayCounter()
int k = 0;
DBConnect db = null;
String sql = null;
loadNum();
today_num += 1;
sql = "update "+TABLE_NAME+" set vnum="+today_num+" where vdate=\'"+today+"\'";
try
db = new DBConnect();
k = db.executeUpdate(sql);
if(k > 0)
incTotalCounter();
catch (Exception e)
// TODO: handle exception
System.out.println("com.hdzx.pub~VisitorCounter.incTotalCounter:增加访问人数");

return k;

//获得今天的日期
private static String getTodayDate()
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(new Date());

///获得今日访问量
public static long getTodayNum()
loadNum();
return today_num;

//获得总的访问量
public static long getTotalNum()
loadNum();
return total_num;


步骤三、经过以上的步骤后,在页面中加入以下的代码,就可以实现网站访问量的统计工作:
  if(session.isNew())

VisitorCounter.incTodayCounter();

%>
今日访问量:<%=VisitorCounter.getTodayNum() %><br/>
总的访问量: <%=VisitorCounter.getTotalNum() %>
参考技术A .如果是一个ip一天只能访问一次的话
每当用户访问的时候
用 String localIp=request.getLocalAddr();
取得用户ip
这里怎么说呢 应该把每次访问的ip都存起来
然后用这个新ip和 存起来的ip做下比较就
参考技术B 这个简单啊,你只需要把参数写到application中去就可以啊,至于ip的话,只要一样的一天统计一次就可以了 ,application是ServletContext对象实例,生命周期是项目的启动和销毁阶段,里面设置的参数只要不断进行更新就可以啊 参考技术C 学过servlet应该也会Listener吧
建立一个requestListener 有请求的时候就把请求连带用户ip信息存入数据库中(
时间判定,相同则不存,未发现相同则存入数据库

)追问

这样是不是有点影响访问速度,而且如果是并发访问会不会出问题?

追答

总得用数据库记录用户请求吧
用sessionListener好多了
先都存入临时表,再定时转到访问记录表就行,这个要靠触发器判断差异,这样数据库内部操作速度快。

本回答被提问者采纳
参考技术D 页面加载的时候直接访问后台,取ip时间保存就好了;这是原始数据,如果一天算一次,那groupby时间(只取到yyyy-MM-dd)就好了。

如何添加网站统计代码并查询访客ip浏览访问量

 

  1. 技术图片
  2.  找到后,填写相关信息、我们需要一个统计账号、这一才可以进行统计。
    技术图片
  3.  登陆自己的账号、进行下一步的操作。
    技术图片
  4.  登陆个人中心后,找到“添加站点”按钮。
    技术图片
  5.  然后就需要填写网站相关信息,填写完毕后提交。
    技术图片
  6.  提交完成就会出现一段统计代码,复制代码、然后要把代码植入网站空间或者后台,(这里因为每个网站的空间、后台不一样、就无法示范了)如果不会的站长可以交给你的网站开发商,他们很快给您搞定。
    技术图片
  7.  植入到网站后台以后,就可以登陆数据专家查看网站的详细统计了。
    技术图片

以上是关于java如何统计网站访问量?的主要内容,如果未能解决你的问题,请参考以下文章

统计网站访问人数示例

如何实现ASP.NET中网站访问量的统计

如何添加网站统计代码并查询访客ip浏览访问量

Java web 实现 之 Filter分析ip统计网站的访问次数

如何确定访问您网站的用户的人口统计数据?

我想在网站中加入访问量统计功能,就是让访客了解网站的访问量,请问如何实现