`
y_jj520
  • 浏览: 22473 次
  • 性别: Icon_minigender_1
  • 来自: 黑木崖
最近访客 更多访客>>
社区版块
存档分类
最新评论

今日昨日及总访问量的统计(无须数据库)

 
阅读更多
今日昨日及总访问量的统计(无须数据库)的方法

首先在WebRoot下创建Count的文件夹,在其中建count.txt文件,输入一个0,访问一次就将0+1的值写入文件;

编写一个读取和写入的java类文件

import java.io.*;
public class Counter extends Object

{
private String currentRecord = null;//保存文本的变量
private BufferedReader file; //BufferedReader对象,用于读取文件数据
private String path;//文件完整路径名
public Counter() {
}
//ReadFile方法用来读取文件filePath中的数据,并返回这个数据
public String ReadFile(String filePath) throws IOException
{
  path = filePath;
  //创建新的BufferedReader对象
  file = new BufferedReader(new FileReader(path));
  String returnStr =null;
  try
  {
   //读取一行数据并保存到currentRecord变量中
   currentRecord = file.readLine();
  }
  catch (IOException e)
  {
   //错误处理
   System.out.println("读取数据错误.");
  }
  if (currentRecord == null)
  {
   //如果文件为空
   NewFile newf=new NewFile();
   newf.createFile(path);
   returnStr = "没有任何记录";
  }
   else
  {
   //文件不为空
   returnStr =currentRecord;
  }
  file.close();
  //返回读取文件的数据
  return returnStr;
}
//ReadFile方法用来将数据counter+1后写入到文本文件filePath中
//以实现计数增长的功能
public void WriteFile(String filePath,String counter) throws FileNotFoundException
{
  path = filePath;
  //将counter转换为int类型并加一
  int Writestr = Integer.parseInt(counter)+1;
  try {
   //创建PrintWriter对象,用于写入数据到文件中
   PrintWriter pw = new PrintWriter(new FileOutputStream(filePath));
   //用文本格式打印整数Writestr
   pw.println(Writestr);
   //清除PrintWriter对象
   pw.close();
  } catch(IOException e) {
   //错误处理
   System.out.println("写入文件错误"+e.getMessage());
  }
}

}

如果只需要总访问量的话,就不用往下看了,直接在页面上读取文本文件count.txt的内容就可以了.但如果还需要日访问量就继续往下看吧.

再编写一个自动创建txt文件的类,如:当在2008-07-07访问网站时,就自动创建一个2008-7-7.txt文件,并且给它写入0的字符,

import java.io.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class NewFile {

public NewFile(){
}

public void createFile(String path){
  
   //   获取当前时间
   java.util.Calendar todays = new java.util.GregorianCalendar();
   String todaytimes = todays.getTime().toLocaleString();
   String[] date_arr=todaytimes.split(" ");
   String dc_date=date_arr[0];
  
   try
   {//如果昨天没有记录,就自动创建一个昨天信息
    String[] day_ar=dc_date.split("-");
    int aftdate=Integer.parseInt(day_ar[2])-1;
    int yuedate=Integer.parseInt(day_ar[1]);
    if(aftdate<=0){
     aftdate=30;
     yuedate=yuedate-1;
    }
    File fileafter=new File(path+"/Count/"+day_ar[0]+"-"+yuedate+"-"+aftdate+".txt");
    if(!fileafter.exists()){
     fileafter.createNewFile();
     String fstr="0";
     RandomAccessFile fm = null;
     try {
      fm = new RandomAccessFile(fileafter,"rw");
      fm.writeBytes(fstr);
     } catch (IOException e3) {
      e3.printStackTrace();
     } finally{
      if(fm!=null){
       try {
        fm.close();
       } catch (IOException e4) {
        e4.printStackTrace();
       }
      }
     }
    }
   
    File filename = new File(path+"/Count/"+dc_date+".txt");
    if(!filename.exists()){
     filename.createNewFile();
     String filein="0";
     RandomAccessFile mm = null;
     try {
      mm = new RandomAccessFile(filename,"rw");
      mm.writeBytes(filein);
     } catch (IOException e1) {
      e1.printStackTrace();
     } finally{
      if(mm!=null){
       try {
        mm.close();
       } catch (IOException e2) {
        e2.printStackTrace();
       }
      }
     }
    }
   }
   catch(IOException e1){
    e1.printStackTrace();
   }
   finally{
    deleteFile(path);
   }

}

public void deleteFile(String path){
 
//  获取当前时间
  java.util.Calendar todays = new java.util.GregorianCalendar();
  String todaytimes = todays.getTime().toLocaleString();
  String[] date_arr=todaytimes.split(" ");
  String dc_date=date_arr[0];
 
  String[] day_arr=dc_date.split("-");
  //删除上月所有的日期文本文件
  for(int i=1;i<=31;i++)
  {
   int yuedate=Integer.parseInt(day_arr[1])-1;
   String dc_day=day_arr[0]+"-"+yuedate+"-"+i;
   File files=new File(path+"/Count/"+dc_day+".txt");
   if(files.exists()){
    files.delete();
   }
  }
}
}
最后在页面的读取

<%
//调用counter对象的ReadFile方法来读取文件lyfcount.txt中的计数
String url=request.getRealPath("/Count/count.txt");
String cont=counter.ReadFile(url);
//调用counter对象的ReadFile方法来将计数器加一后写入到文件lyfcount.txt中
counter.WriteFile(url,cont);
%>
全站总访问量:<%=cont%> <br />
<%
path = this.getServletContext().getRealPath("").replace("\\", "/");
newfile.createFile(path);
String d_url=request.getRealPath("/Count/"+dc_date+".txt");
String d_cont=counter.ReadFile(d_url);
//调用counter对象的ReadFile方法来将计数器加一后写入到文件lyfcount.txt中
counter.WriteFile(d_url,d_cont);
%>
今日总访问量:<%=d_cont%> <br />
<%
String[] day_arr=dc_date.split("-");
int aftdate=Integer.parseInt(day_arr[2])-1;
int yuedate=Integer.parseInt(day_arr[1]);
if(aftdate<=0){
  aftdate=30;
  yuedate=yuedate-1;
}
String dc_day=day_arr[0]+"-"+yuedate+"-"+aftdate;
String a_url=request.getRealPath("/Count/"+dc_day+".txt");
String a_cont=counter.ReadFile(a_url);
//调用counter对象的ReadFile方法来将计数器加一后写入到文件lyfcount.txt中
%>
昨日总访问量:<%=a_cont%> <br />

分享到:
评论

相关推荐

    统计网站总访问量 实例

    在互联网行业中,统计网站总访问量是一项至关重要的任务,它能反映出网站的受欢迎程度、用户活跃度以及内容吸引力。为了防止不真实的访问量(如通过刷新页面来人为增加访问量),通常会采取一些策略和工具进行准确的...

    Springboot网站用户的访问量统计

    在Spring Boot框架中,实现网站用户的访问量统计是一项常见的需求,它可以帮助我们了解网站的活跃度、用户行为以及优化服务性能。本项目标题为“Springboot网站用户的访问量统计”,这意味着我们将探讨如何在Spring ...

    ASP.NET统计日访问量,总访问量

    在ASP.NET中实现统计日访问量和总访问量的功能是网站运营中的常见需求,它可以帮助开发者了解网站的活跃度,进而优化用户体验,提高网站性能。 首先,我们需要理解“日访问量”和“总访问量”的概念。日访问量指的...

    php 网站访问量统计

    访问量通常包括独立访客数(UV)、总访问次数(PV)以及页面浏览量等。独立访客数是通过记录每个访客的唯一标识(如IP地址或Cookie)来计算的,总访问次数是页面被加载的总次数,而页面浏览量则关注的是用户在每个...

    网站访问量统计源代码

    网站访问量统计源代码涉及到的关键知识点包括:数据库查询、时间处理、循环结构、数据比例计算以及图表呈现。以下是对这些知识点的详细说明: 1. **数据库查询**:在这个例子中,开发者通过SQL语句从数据库中获取每...

    JAVA 统计网站的访问量PV,UV

    在IT行业中,统计网站的访问量是衡量一个网站活跃度和受欢迎程度的重要指标。这里我们主要探讨如何使用Java,Spring框架以及MySQL数据库来实现对网站的PV(页面浏览量)和UV(独立访客数)的统计。首先,我们需要...

    网站访问量统计 asp 源码

    综上所述,"网站访问量统计asp源码"是一个基于ASP技术实现的动态统计系统,它通过读取和更新服务器上的数据来记录网站的访问情况,包括页面浏览次数、独立访客等关键指标。实际应用中,开发者需要根据具体需求对源码...

    ASP 统计网站访问量

    6. **其他统计信息**:除了总访问量,还可以扩展统计功能,如记录最热门的页面、用户停留时间等。这需要更复杂的逻辑,可能涉及到数据库操作。 在提供的文件列表中,"asp,统计网站访问量"可能是包含实现以上功能的...

    【ASP.NET编程知识】ASP.net中网站访问量统计方法代码.docx

    本文介绍了如何使用ASP.NET实现网站访问量统计的方法,包括建立数据表、获取用户信息、在线人数和访问总人数的统计、将信息保存到数据库和定时器的创建。这些方法可以帮助我们更好地统计网站的访问量。 相关知识点 ...

    简单网站访问量计数器

    - **数据显示**:网页上的计数器组件从数据库中获取这些数据,并以指定的格式(如"今日访问量: 昨日访问量: 本月访问量: 上月访问量: 站总访问量: 开通总天数:")展示出来。 在设计和部署这类计数器时,还需要考虑...

    实验二 JSP表单开发及访问数据库

    实验二“JSP表单开发及访问数据库”旨在让学生掌握JSP动态网页技术与数据库交互的基本操作。实验主要涵盖两个核心知识点:JSP表单的创建与处理,以及使用JDBC连接和操作数据库。 首先,JSP表单是网页中用于收集用户...

    利用ODBC访问WINCC的历史数据库.doc

    利用ODBC访问WINCC的历史数据库doc,利用ODBC访问WINCC的历史数据库

    SQL和Oracle中统计数据库中表个数及表名

    在SQL和Oracle数据库管理系统中,有时我们需要统计数据库中包含的表的数量以及获取具体的表名。以下是如何在两者中实现这一目标的详细步骤。 在SQL中,我们通常使用系统对象表来获取相关信息。`sys.objects`是SQL ...

    sqlserver统计一个数据库有多少个字段,有多少张表的sql脚本

    两个脚本均可以执行于任何SQL Server实例中,前提是数据库用户拥有足够的权限来访问information_schema数据库。通常情况下,数据库管理员权限已经足够执行这些查询。 另外,这些脚本不会因为数据库中数据的变化而受...

    数据库原理与访问

    数据库原理与访问 数据库作为计算机科学的一个重要分支,一直以来都在信息处理领域扮演着核心角色。随着技术的发展和信息时代的到来,数据库已经从最初的简单存储方式演进为能够高效处理、存储和共享信息的复杂系统...

    通用数据库访问类支持多数据库

    总的来说,通用数据库访问类是一种实用的设计策略,它通过抽象和封装数据库操作,实现了跨数据库的兼容性。这样的设计不仅提高了开发效率,也使得系统的扩展性和适应性得到了显著提升。对于需要与多种数据库打交道的...

    wpf 访问Access 数据库

    在.NET框架中,Windows Presentation Foundation (WPF)是用于构建桌面应用程序的一个强大的用户界面平台,而Access数据库则是一种常用的轻量级数据库管理系统。本主题将深入探讨如何在WPF应用中访问和操作Access...

    Dapper访问多数据库

    Dapper是一个轻量级的.NET ORM(对象关系映射)工具,它被设计为高效、简单且快速。在处理数据库操作时,Dapper提供了一种更接近原生SQL的方式来操作数据库,同时保持了与.NET Framework的紧密集成。本文将深入探讨...

    ASP.NET中网站访问量的统计

    在ASP.NET中,统计网站访问量是一个常见的需求,这有助于网站管理员了解网站的受欢迎程度、用户行为以及优化网站性能。本文将详细介绍如何在ASP.NET环境中实现这一功能。 首先,我们需要建立一个数据表来存储访问...

    数据库访问公共类

    数据库访问公共类

Global site tag (gtag.js) - Google Analytics