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については、ここでは説明しません.みんな知っているはずですが、本当に知らないので、度娘に聞いてみましょう.
    次にツールクラスを作成
    タイムノードエンティティークラスを作成するには、次の手順に従います.
    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だけではありません