1. 程式人生 > >Java實現:月,日,年,周,訪問量統計

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實現訪問量統計

一:工程截圖: 二:執行效果圖: 三:CountObjectInfo.java: package cn.csrc.base.count; import java.util.Date; public class CountObjectInfo { // 總訪問量

【約瑟夫環】Java實現100個人開始從1開始報數每當報數到3,報數3的人離開求最後留下來人的位置。

問題背景:約瑟夫環問題  在這裡寫一個簡單的約瑟夫環的問題:100個人坐成一圈開始從1開始報數,每個報數為3的人離開座位,直到座位上只剩下一個人,求這個人的位置。 解決問題使用的工具&程式語言:  工具:Eclipse  程式設計:Java 程式碼如下: public class Yuesef

java實現201899晚上的京東筆試題現給出n個物品的a,b,c引數請你求出不合格品的數量。

題目: 現有n個物品,每個物品有三個引數,ai,bi,ci,定義i物品不合格的依據是:若存在物品j,且aj>ai,bj>bi,cj>ci,則稱i物品為不合格品。 現給出n個物品的a,b,c引數,請你求出不合格品的數量。 輸入: 第一行包含一個整數n(1<=n&

java實現201897下午的科大訊飛筆試題平安夜殺手

下邊是自己理解的解答,如果有問題歡迎指出。 java實現:2018年9月7日下午的科大訊飛筆試題:平安夜殺手 題目:(這裡是按照原題打字的) 有n個殺手排成一行,每一個殺手都有不同的編號(編號為1~n),在每個夜晚殺手都會行動,如果殺手編號大於他右邊的殺手的編號,他就會殺死他右邊的殺手,

【7.11】為Date類過載“+”運算子實現在某一個日期上()加一個天數。

#include<iostream.h>  class Date   {      int month;      int day;      int year;  public:     Date(){}      Date(int i)     {day=i;      m

2018108django檢視版本命令python2&3中print區別iterable報錯SSH,pycharm/ubuntu顏色設定

檢視Django版本的命令: 1. 在終端中輸入: python -m django –-version 2. 進入python互動環境:        import django    &nb

java實現拼串讓數值最大

思路: 主要是使用一個氣泡排序:             /*              * 這個

201911最新KMS伺服器地址windows系統KMS啟用

2019年1月1日最新KMS伺服器地址,windows系統KMS啟用 永久更新地址: https://v0v.bid/ windows系統一句命令啟用 命令提示符(管理員)執行: slmgr /skms kms.v0v.bid && slmgr /ato 備用K

# 程式設計俱樂部每日一練(20181127)我讀書少你們得幫幫我 加特林大戰殭屍

程式設計俱樂部每日一練(2018年11月27日)我讀書少,你們得幫幫我 加特林大戰殭屍 我讀書少,你們得幫幫我 Description 這是一題簡單的題目,考的只是你的數學而已。我一直都很好奇愚公一家到底有多少人。好吧,毛學姐說你們會幫我的。假設愚公家族 每個人的一生是這樣度過的

2019506 你的夢裏究竟藏了多少秘密?

關註 ESS cts rst rds without 激發 answer imu 2019 年 5 月 06 日 你的夢裏究竟藏了多少秘密? 衛報 講解人 · 宇軒 芝加哥大學語言學學士 媒體內容策略規劃師 今日導讀 人類最早對夢發生興趣可以追溯到文

Java實現拋開jieba等工具寫HMM+維特比演算法進行詞性標註

一、前言:詞性標註 二、經典維特比演算法(Viterbi) 三、演算法實現 四、完整程式碼 五、效果演示: 六、總結 一、前言:詞性標註   詞性標註(Part-Of-Speech tagging, POS tagging),是語料庫語言學中將語料庫中單詞的詞性按其含義和上下文內容進行標記的文字資料處理技術

快速閱讀實踐總結第一期2017911——2017924

實踐 完成 管理類 計劃 小時 習慣 列表 睡眠 養成 一周計劃閱讀六本書 結果第一周閱讀三本書 第二周沒有閱讀成果 實踐失敗 但仍需堅持 問題所在: 不能養成起床閱讀的習慣 書籍選擇有問題,選擇一本需要精讀、總結、實踐的管理類書籍 不能堅持每天閱讀 已完成閱讀列表:

Java程序從命令行接收多個數字求和並輸出結果

程序代碼 ati for right 流程圖 public 技術 參數 由於 程序設計思想:由於命令行接收的是字符串類型,因此應先將字符串類型轉化為整型或其他字符型,然後利用for循環求和並輸出結果 程序流程圖: 源程序代碼: 1 public class Ja

Java集合List、Set和Map的區別ArrayList和LinkedList有何區別..........

一、陣列和集合的區別:   陣列是大小固定的,並且同一個陣列只能存放型別一樣的資料(基本型別/引用型別);   集合可以儲存和操作數目不固定的一組資料。 所有的JAVA集合都位於 java.util包中! JAVA集合只能存放引用型別的的資料,不能存放基本資料型別。   陣列和集合相比唯一的有點就是速度

java實現2018.09.13晚上七點華為和銳明秋招筆試題

java實現:2018.09.13年晚上七點華為和銳明秋招筆試題 一:華為筆試: 首先是華為是隻有三個程式碼題,第一個是找出字串中最後一個只出現一次的字母(略)。第二題是字串順序顛倒(略)。前面兩個就是簡單的操作資料,最後一個就是關於大數的相乘,比如一個兩個數每個數都20位資料,這種情況下,

214情人節即將來臨儲君為大家找到了“程式設計師聊沒女朋友的四大神坑”辛苦奮鬥的猿們不要再次入坑

月14日情人節即將來臨,熊小妹為大家找到了“程式設計師聊沒女朋友的四大神坑”,辛苦奮鬥的猿們不要再次入坑哦~~~ 公司裡常流傳著這麼一句話: c程式設計師看不起c++程式設計師, c++程式設計師看不起java程式設計師, java程式設計師看不起c#程式設計師,c#程

Java實現主執行緒等待子執行緒joinCountDownLatch

本文介紹兩種主執行緒等待子執行緒的實現方式,以5個子執行緒來說明: 1、使用Thread的join()方法,join()方法會阻塞主執行緒繼續向下執行。 2、使用Java.util.concurrent中的CountDownLatch,是一個倒數計數器。初始化時先設定

java基礎熟悉3種內部類的寫法重點匿名內部類的使用

package methodinner;public class Test { class Duanzanshichangzheng { public void noProblem() { System.out.println("患有急性短暫失常症,開車撞死人沒事"

JAVA筆試一道綜合考察題(內部類傳值呼叫多型)

public class Tree { private static String tree = "tree"; String getTree() { return t

程式設計實現 李四去海南旅遊定機票機票的價格受淡季和旺季影響受頭等艙和經濟艙影響。 假設機

public class Test_17 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("請輸入您出行的月份:");int