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/



  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷彩的博客

你的鼓励将是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值