⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 countserviceimpl.java

📁 这个通过为web.xml配置监听器实现的一个网站访问量统计的实例.使用access数据库,只需添加该模块即可,不影响你原有的数据库设计.推荐下载
💻 JAVA
字号:
package count;

import java.util.Calendar;
import java.util.Date;


public class CountServiceImpl{
	
	private static final int DEFAULT_COUNT = 0;

	
	private CountDAOImpl countDAO;
        private Count count=null;

	private static CountServiceImpl instance=null;

        private CountServiceImpl(){
               countDAO=new CountDAOImpl();
               this.count = countDAO.getCount();
             }

        public static CountServiceImpl getInstance(){
            if(instance==null){
               instance=new CountServiceImpl();
            }
            return instance;
        }   
	
	public final Count getCount(final boolean arg) {
		

		if (count == null) {
			count = createCount();
			updateCount(count);//更新计数
		}

		if (arg) {
			updateCount(count);
		}

		return count;
	}

	
	private Count createCount() {
		Date date = new Date();
		Count count = new Count();
		count.setAllCount(DEFAULT_COUNT);
		count.setAvgCount(DEFAULT_COUNT);
		count.setCreateDate(date);
		count.setMaxCount(DEFAULT_COUNT);
		count.setMaxDate(date);
		count.setTodayCount(DEFAULT_COUNT);
		count.setTodayDate(date);
		//countDAO.createCount(count);
		count.setOnlineCount(DEFAULT_COUNT);

		return count;
	}

	/**
	 * DOCUMENT ME!
	 * 
	 * @param count
	 *            DOCUMENT ME!
	 */
	private void updateCount(Count count) {
		Calendar now = Calendar.getInstance();
		now.setTime(new Date());

		Calendar oldDate = Calendar.getInstance();
		oldDate.setTime(count.getTodayDate());
		count.setAllCount(count.getAllCount() + 1);//总访问量加1
		//set today count
		if ((now.get(Calendar.YEAR) + now.get(Calendar.MONTH) + now
				.get(Calendar.DAY_OF_MONTH)) == (oldDate.get(Calendar.YEAR)
				+ oldDate.get(Calendar.MONTH) + oldDate
				.get(Calendar.DAY_OF_MONTH))) {
			count.setTodayCount(count.getTodayCount() + 1);//今日访问量加1
		} else {
			count.setTodayCount(1);//今日访问量设为1
			count.setTodayDate(new Date());
		}

		if (count.getTodayCount() > count.getMaxCount()) {//日最大访问量计算
			count.setMaxCount(count.getTodayCount());
			count.setMaxDate(count.getTodayDate());
		}

		
		int days = Integer.parseInt(String.valueOf((count.getTodayDate()
				.getTime() - count.getCreateDate().getTime())
				/ (3600 * 24 * 1000)));
		days = (days == 0) ? 1 : days;

		int avgCount = (count.getAllCount() / days);//日平均访问量计算
		count.setAvgCount(avgCount);
                int tempcount=count.getTempCount();
                if(tempcount>=5){//如果临时访问量大于5,数据存入数据库
                    countDAO.updateCount(count);
                    count.setTempCount(0);
                }
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -