`
sxdtzhaoxinguo
  • 浏览: 213393 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java实现:月,日,年,周,访问量统计

 
阅读更多

一:工程截图:


二:运行效果图:


三:CountObjectInfo.java:

package cn.csrc.base.count;

import java.util.Date;

public class CountObjectInfo {

	// 总访问量合计
	protected int totalCount = 0;
	// 日访问量
	protected int dayCount = 0;
	// 周访问量
	protected int weekCount = 0;
	// 月访问量
	protected int monthCount = 0;
	// 年访问量
	protected int yearCount = 0;
	// 临时访问量
	protected int tempCount = 0;

	protected Date date = new Date();

	public int getDayCount() {
		return dayCount;
	}

	public int getMonthCount() {
		return monthCount;
	}

	public int getTotalCount() {
		return totalCount;
	}

	public int getWeekCount() {
		return weekCount;
	}

	public int getYearCount() {
		return yearCount;
	}

	public void setDayCount(int i) {
		dayCount = i;
	}

	public void setMonthCount(int i) {
		monthCount = i;
	}

	public void setTotalCount(int i) {
		totalCount = i;
	}

	public void setWeekCount(int i) {
		weekCount = i;
	}

	public void setYearCount(int i) {
		yearCount = i;
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	public int getTempCount() {
		return tempCount;
	}

	public void setTempCount(int i) {
		tempCount = i;
	}

}

四:CountXml.java:

package cn.csrc.base.count;

import java.io.FileReader;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;

public class CountXml {

	/** 在这里定义XMLCOUNT.XML的绝对路径,注意此处代码要修改的哦 */
	private String fileName = "E:\\workspace\\Count\\WebContent\\WEB-INF\\xmlcount.xml";

	private static CountObjectInfo obj = null;

	private static CountXml instance = null;

	public static CountXml getInstance() {
		if (instance == null) {
			instance = new CountXml();
		}
		return instance;
	}

	private CountXml() {
		try {
			obj = read(fileName);
		} catch (Exception e) {
			System.out.println(e);
		}

	}

	public int getTotalCount() {
		return obj.getTotalCount();
	}

	public int getDayCount() {
		return obj.getDayCount();
	}

	public int getMonthCount() {
		return obj.getMonthCount();
	}

	public int getWeekCount() {
		return obj.getWeekCount();
	}

	public int getYearCount() {
		return obj.getYearCount();
	}

	public synchronized void addcount(Date da) {// 比较日期增加计数
		if (new SimpleDateFormat("yyyy-MM-dd").format(this.obj.date).equals(
				new SimpleDateFormat("yyyy-MM-dd").format(da)))
			this.obj.setDayCount(this.obj.getDayCount() + 1);
		else
			this.obj.setDayCount(1);

		if (new SimpleDateFormat("yyyy-MM").format(this.obj.date).equals(
				new SimpleDateFormat("yyyy-MM").format(da)))
			this.obj.setMonthCount(this.obj.getMonthCount() + 1);
		else
			obj.setMonthCount(1);

		Calendar ca = Calendar.getInstance();
		ca.setTime(da);
		ca.setFirstDayOfWeek(Calendar.MONDAY);

		if (ca.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY
				&& !new SimpleDateFormat("yyyy-MM-dd").format(this.obj.date)
						.equals(new SimpleDateFormat("yyyy-MM-dd").format(da)))
			obj.setWeekCount(1);
		else
			obj.setWeekCount(obj.getWeekCount() + 1);

		if (new SimpleDateFormat("yyyy").format(this.obj.date).equals(
				new SimpleDateFormat("yyyy").format(da)))
			this.obj.setYearCount(this.obj.getYearCount() + 1);
		else
			obj.setYearCount(1);
			obj.setDate(da);

		obj.setTotalCount(obj.getTotalCount() + 1);
		obj.setTempCount(obj.getTempCount() + 1);
		if (obj.getTempCount() >= 0) {// 只有当临时访问量大于等于20时才保存一次
			obj.setTempCount(0);// 临时计数器置0
			write(fileName);
		}
	}

	private void write(String fileName) {
		try {
			FileWriter writer = new FileWriter(fileName);
			Marshaller.marshal(obj, writer);
			writer.close();
		} catch (Exception e) {
			System.out.println(e);

		}
	}

	private CountObjectInfo read(String fileName) throws Exception {
		FileReader reader = new FileReader(fileName);
		CountObjectInfo result = (CountObjectInfo) Unmarshaller.unmarshal(
				CountObjectInfo.class, reader);
		reader.close();
		return result;
	}

}

五:index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="cn.csrc.base.count.CountXml" %>	
<!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>计算器测试</title>
</head>
<body>
	计算器测试
	<br>
	<%
		CountXml xmlcount = CountXml.getInstance();
		if (session.isNew()) {
			xmlcount.addcount(new Date());//增加访问量
			int n = xmlcount.getTotalCount();//取总访问量 
			String count = Integer.toString(n);
			session.putValue("count", count);
		}
	%>
	您是第<font color="red"><%=session.getValue("count")%></font>位访问者 <br>  
	总访问量:  <%=xmlcount.getTotalCount() %><br>
	本年访问量:<%=xmlcount.getYearCount() %><br>
	本月访问量:<%=xmlcount.getMonthCount() %><br>
	本周访问量:<%=xmlcount.getWeekCount() %><br>
	本日访问量:<%=xmlcount.getDayCount() %><br>
</body>
</html>

六:xmlcount.xml文件的初始内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<xml-body>
</xml-body>

七:源码下载地址:http://download.csdn.net/detail/sxdtzhaoxinguo/7615273


八:程序参考地址:http://bujingyun23.blog.163.com/blog/static/18131024320131594942633/



分享到:
评论

相关推荐

    非常完美Java实现年、月、日、周访问量统计

    非常完美Java实现年、月、日、周访问量统计、

    非常完美Java实现年

    非常完美Java实现年、月、日、周访问量统计、欢迎jia3456.com大家下载!

    融成Java后台网站内容管理系统 v3.2.1.rar

    13.流量分析可以查看某一周各天的访客统计信息; 14.页面分析可以查看某一个页面的访问统计信息,进而获知某一个页面的访问热度; 15.栏目点击热度分析可以查看某一个web页面的点击热度,进而获知某栏目的访客喜爱...

    javascript实现的网站访问量统计代码

    网站一般都有访问量统计工具,比较高效实用的工具多种多样,并且非常的精确。实用javascript也可以简单的实现此功能,尽管没有网络上常用的精确,不过的确也实现了一定的功能,下面就是一段代码实例,感兴趣的朋友...

    xmljava系统源码-iBase4J-SpringBoot:JAVA分布式快速开发平台:Spring,SpringBoot,SpringMV

    数据库:Druid数据库连接池,监控数据库访问性能,统计SQL的执行性能。 数据库密码加密,加密方式请查看PropertiesUtil,decryptProperties属性配置需要解密的key。 持久层:mybatis持久化,使用MyBatis-Plus优化,...

    asp.net知识库

    asp.net 2.0-实现数据访问(1) ASP.NET 2.0 新特性 .NET 2.0里使用强类型数据创建多层应用 在MastPage中引用脚本资源 2.0正式版中callback的一些变化+使用示例(ASP.NET 2.0) asp.net 2.0 新特性 Visual Web ...

    Object Browser7.0中文版(ORACLE数据库的开发工具)

    Browser在日本市场上创出了非常好的销售业绩,在过去三年中,每个月都创下新的销售记录.到目前为止,该产品已经被5000家企业采用,具有很强的竞争力. 今年六月份,System&nbsp;Integrator推出Object&...

Global site tag (gtag.js) - Google Analytics