package com.zrw.publicmessage.util; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.Properties; import com.zrw.publicmessage.service.PublicMessageService; public class Counter { private String cs; //字符型访问计数数值; private int ci; //整形访问计数数值; private int counterSize; //访问计数器位数; private String HTMLCode; //HTML代码; private byte buffer[]; //输出缓存字节数组; private String tempStr; //字符型中间变量; private int tempInt; //整形中间变量; //private String logFileName; //信息记录文件名称; private String counterFileName; //访问计数文件名称; private FileOutputStream counterOut; //访问计数运算结果记录输出; private FileOutputStream infoOut; //信息记录输出; private FileInputStream counterIn; //访问计数记录输入; private DataInputStream dataRead; //以数据形式输入访问计数记录; // private String userAgent; //用户使用的浏览器; // // private String userIP; //用户IP地址; // // private Date userTime; //用户访问时间; private final static String FILE_PATH; // 文件保存路径 static { try { InputStream input = PublicMessageService.class.getClassLoader().getResourceAsStream("file_path.properties"); Properties prop = new Properties(); prop.load(input); FILE_PATH = prop.getProperty("com.zrw.publicmessage.vo.PublicMessageFile"); File file = new File(FILE_PATH); if(!file.exists()){//文件夹不存在 file.mkdir(); } } catch (IOException e) { // TODO 自动生成 catch 块 e.printStackTrace(); throw new RuntimeException("读取文件保存路径错误"); } } // 构造函数 public Counter() { tempStr = null; tempInt = 0; //logFileName = "log.txt"; counterFileName = FILE_PATH+"/counter.txt"; cs = null; ci = 0; counterSize = 8; HTMLCode = ""; // userAgent = null; // userIP = null; // userTime = new Date(); } /* // 访问信息记录文件设置函数 public void setLogFileName(String filename) { logFileName = filename; } */ // 访问计数记录文件设置函数 public void setCounterFileName(String filename) { counterFileName = FILE_PATH+"/"+filename; } // 计数器位数设置函数 public void setCounterSize(int csize) { counterSize = csize; } // 数据读取函数 public void read() { try { counterIn = new FileInputStream(counterFileName); dataRead = new DataInputStream(counterIn); cs = dataRead.readLine(); ci = Integer.parseInt(cs); } catch (Exception ex) { System.out.println(ex.getMessage()); } } // 访问信息,访问计数记录函数 public void write() { try { counterOut = new FileOutputStream(counterFileName); //infoOut = new FileOutputStream(logFileName, true); tempInt = ci + 1; buffer = (new String().valueOf(tempInt)).getBytes(); counterOut.write(buffer); //tempStr = userAgent + "|" + userIP + "|" + userTime + "\r"; //buffer = tempStr.getBytes(); //infoOut.write(buffer); } catch (Exception ex) { System.out.println(ex.getMessage()); } } // HTML代码返回函数 public String getHTMLCode() { // if (uAgent == null) // userAgent = "empty"; // else // userAgent = uAgent; // if (uIP == null) // userIP = "empty"; // else // userIP = uIP; if(!existsFile()){ System.out.println("not found file '"+counterFileName+"'"); write(); } read(); write(); close(); if (cs.length() < counterSize) { //根据计数器长度,不足则前面加零; for (int i = 0; i < (counterSize - cs.length()); i++) { HTMLCode = HTMLCode + "<img src='images/0.gif'>"; } } for (int i = 0; i < cs.length(); i++) { //将记录数转换成HTML代码 HTMLCode = HTMLCode + "<img src='images/"; HTMLCode = HTMLCode + cs.charAt(i) + ".gif'>"; } return HTMLCode; } //判断是否存在计数文件 private boolean existsFile() { try{ File dirFile = new File(counterFileName); if(dirFile.exists()){ return true; } }catch(Exception e){ System.out.println(e.getMessage()); } return false; } // 文件关联关闭函数 public void close() { try { //infoOut.close(); counterOut.close(); counterIn.close(); dataRead.close(); } catch (Exception ex) { System.out.println(ex.getMessage()); } } }
相关推荐
这篇文章将详细介绍如何使用Java来统计网站的访问量,包括PV和UV的计算方法。 PV(页面浏览量)是指用户在网站上每打开一次页面就被计数一次,它反映了网站的总浏览次数。例如,如果一个用户在同一页面上刷新了三次...
在Java开发中,统计高并发环境下首页访问量并记录客户登录信息是一项常见的需求,这涉及到系统性能优化、数据持久化以及并发控制等多个方面。在这个项目中,开发框架选择了Spring,这是一个广泛使用的Java企业级应用...
解压并阅读这些文件,将有助于进一步理解和实践这个Java访问量统计的解决方案。 总结来说,通过Java实现年、月、日、周访问量统计涉及日期处理、数据结构选择、日志解析和数据统计等多个方面。熟练掌握这些技能,将...
10. **测试**:确保编写单元测试和集成测试来验证你的统计逻辑,特别是边界情况,如跨年、跨月的访问统计。 通过掌握这些知识点,你将能够有效地实现Java中的访问量统计功能,覆盖到不同的时间粒度。
Java基于XML实现网站访问量统计是一种常见的Web应用监控方法,主要通过解析XML文件来记录和分析网站的访问数据。在不改动数据库的情况下,这种技术提供了一种轻量级且易于集成的解决方案。以下是对这个主题的详细...
本主题将详细介绍如何使用Java编程语言来实现这一功能,特别是关注当前年、月、日的访问量统计。 首先,我们需要理解基本的统计原理。网站访问量通常通过记录每个独立访客的请求来计算。在线人数则是指在特定时间...
一、访问量与响应时间统计工具。 1、能让你知道当前服务上的接口单位时间内访问量是多少,总的响应时间是多少 2、通过1里的数据,你能知道哪个接口反应慢,如果服务假死,能根据它来快速判断哪些接口搞死了服务...
Java字数统计程序是一种利用Java编程语言开发的小型应用程序,主要功能是对用户输入的文本进行分析,计算其中的字符数量,通常包括汉字、字母、数字以及其他符号。在文本处理领域,这种工具非常实用,比如在文章编辑...
java代码统计工具,给出一个文件路径,统计出代码的总行数,注释行数,空行行数。含可运行的jar,以及源代码。 更多请访问: http://blog.csdn.net/china8848
综上所述,Java投票统计模块是一个包含多方面技术的综合项目,涉及前端开发、后端逻辑、数据库设计、安全性、API接口、异常处理、性能优化以及测试和部署等关键环节。理解并掌握这些知识点,对于构建一个高效、安全...
【标题】"JAVA编写SVN统计代码数量系统"是一个基于Spring Boot框架的项目,用于统计在Subversion(SVN)版本控制系统中的代码提交情况。它能够详细地分析每个团队成员在SVN仓库中的代码贡献量。 【核心知识点】: ...
### Java词频统计算法(使用单词树) #### 背景与问题 在文本处理领域,词频统计是一项常见的任务。例如,在自然语言处理、搜索引擎优化、文档分类等应用场景中,了解某个词语出现的频率至关重要。传统的词频统计...
Java代码统计工具是一种小型应用程序,用于计算特定目录下Java源代码的总行数、注释行数和空格行数。这个程序设计为在Windows 7和XP操作系统上运行,但在其他非Windows环境下可能需要对代码进行修改才能正常工作。...
在Java Web开发中,统计网站访问量是一项基本的需求,它可以帮助开发者了解网站的活跃度和受欢迎程度。本文将深入探讨如何使用Java实现一个简单的网站访问量统计系统。 首先,我们需要理解统计网站访问量的基本原理...
下面我们将深入探讨Java中实现访问量统计的相关知识点。 1. **Servlet和Filter**: - **Servlet**:Java Servlet是Java EE中用于扩展服务器功能的接口,它可以处理HTTP请求。在Servlet中,可以记录每次请求的发生...
Java JSP(JavaServer Pages)流量统计系统是一种基于Web的应用程序,旨在帮助网站管理员实时监测和分析他们的网站访问流量。这个系统利用JSP技术来构建动态网页,通过收集、处理和展示数据,提供关于网站用户行为、...
在Java项目中使用JFreeChart时,你需要将这两个JAR文件添加到项目的类路径中,以便能够访问其提供的类和方法。以下是一个简单的示例,展示如何使用JFreeChart创建一个简单的柱状图: ```java import org.jfree....