JAvabean+Jsp統計サイト期間アクセス数
16643 ワード
ブロガーは最近この統計のために、csdn得ブログをひっくり返したと言える.今日の統計を取ることができるか、歴史の閲覧量がないか、歴史の閲覧量があるか、今日の統計を統計することができない.主にブロガーは前に出会ったことがない.このような統計に詳しくない.以下はブロガーがまとめた方法だが、堅苦しいかもしれない.もしみんながもっと良い方法があれば、伝言を残して討論して、一緒に進歩して、よく勉強して飢えて、謙虚で愚かです!
全体的な考え方は、時間ノードのエンティティクラスを作成し、javaを介してXMLを転送する方法で、時間ノードをxmlファイルに書き込み、ioストリーム処理を経てjspページに読み込み、最後に普段私たちが見ているページのフッターの統計情報にアクセスすることです.
まず必須jarパッケージをインポート castor-1.2-xml.jar xercesImpl.jar serializer-2.7.1.jar commons-logging-1.1.1.jar
この4つのjarについては、ここでは説明しません.みんな知っているはずですが、本当に知らないので、度娘に聞いてみましょう.
次にツールクラスを作成
タイムノードエンティティークラスを作成するには、次の手順に従います.
ロジック処理の作成
テスト
結果が1 1 1 1 1 1 1であれば正確な統計を示す
最後にxmlファイルを書き込みます.
ここまで来て、もし結果が正しいならば、XMLファイルは書いて、それではおめでとうございます、統計は完成して、私達はNewだけではありません
全体的な考え方は、時間ノードのエンティティクラスを作成し、javaを介してXMLを転送する方法で、時間ノードをxmlファイルに書き込み、ioストリーム処理を経てjspページに読み込み、最後に普段私たちが見ているページのフッターの統計情報にアクセスすることです.
まず必須jarパッケージをインポート
この4つのjarについては、ここでは説明しません.みんな知っているはずですが、本当に知らないので、度娘に聞いてみましょう.
次にツールクラスを作成
タイムノードエンティティークラスを作成するには、次の手順に従います.
package com.dean.ssm.util.pageview;
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;
}
}
ロジック処理の作成
package com.dean.ssm.util.pageview;
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 = "F:\\myework\\wyin\\WebRoot\\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)))
CountXml.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;
}
}
テスト
"java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
"java.util.Date" %>
"cn.csrc.base.count.CountXml" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> title>
head>
<body>
if (session.isNew()) {
xmlcount.addcount(new Date());//
int n = xmlcount.getTotalCount();//
String count = Integer.toString(n);
session.putValue("count", count);
}
%>
<font color="red">"count")%>font> <br>
: <br>
:<br>
:<br>
:<br>
:<br>
body>
html>
結果が1 1 1 1 1 1 1であれば正確な統計を示す
最後にxmlファイルを書き込みます.
version="1.0" encoding="UTF-8"?>
<count-object-info month-count="1" total-count="1" temp-count="0" day-count="1" week-count="1" year-count="1"><date>2017-12-20T16:00:03.443+08:00date>count-object-info>
ここまで来て、もし結果が正しいならば、XMLファイルは書いて、それではおめでとうございます、統計は完成して、私達はNewだけではありません