网站计数器必须注意以下三个问题:

(1)网站的来访人数可能会很多,有可能超过20位数,所以必须使用大整数累——BigInteger累完成。

(2)用户每次在第一次访问时才需要进行计数的操作,在执行计算之前必须使用isNew()判断。

(3)在进行更改、保存时需要进行同步操作。

<%@ page contentType="text/html" pageEncoding="GBK"%>

<%@ page import="java.io.*"%>      <%--由于要使用IO操作,必须导入java.io包--%>

<%@ page import="java.util.*"%>   <%--Scanner在java.util包中定义--%>

<%@ page import="java.math.*"%>   <%--BigInteger定义在java.math包中--%>

<html>

<head><title>Java</title></head>

<body>

<%!

BigInteger count=null;  //定义成全局变量

%>

<%!

public BigInteger load(File file){   //读取计数文件

BigInteger count=null;  //接受计数文件

try{

if(file.exists()){  //如果文件存在,则读取

Scanner scan=null; //定义Scanner对象

scan=new Scanner(new FileInputStream(file));//从文件中读取

if(scan.hasNext()){   //存在内容

count=new BigInteger(scan.next());//将内容放到BigInteger类中

}

scan.close(); //关闭输入流

}else{       //文件不惨在则创建新的

count=new BigInteger("0"); //第一次访问

save(file.count); //调用save(),保存新的文件

}

}catch(Exception e){

e.printStackTrace();

}

return count; //返回读取后的数据

}

public void save(File file,BigInteger count){  //保存计数文件

try{

PrintStream ps=null;  //定义输出流对象

ps=new PrintStream(new FileOutputStream(file));//打印流对象

ps.println(count);//保存数据

ps.close();//关闭输出流

}catch(Exception e){

e.printStackTrace();

}

}

%>

<%

String fileName=this.getServletContext().getRealPath("/")+"count.txt";   //文件路径

File file =new File(fileName);

if(session.isNew()){

synchronized(this){   //必须进行同步操作

count=load(file);

count=count.add(new BigInteger("1"));//自增操作

save(file,count);  //保存修改后的数据

}

}

%>

<h2>您是第<%=count==null?0:count%>位访客!</h2>

</body>

</html>

本程序中,首先定义了一个全局变量BigInteger,这样即使用户刷新页面,BigInteger对象也不会重复声明。程序中为了保存和读取操作的方便,分别定义了save()和load()方法。load()中首先判断文件是否存在,如果存在,则将已有内容读取进来;如果文件不存在,则创建一个新的count.txt文件(此文件默认保存在Web项目的根目录中),并且将其中的内容设置为0.如果用户是第一次访问,则要执行文件的更新操作,在同步代码中首先对内容进行修改(让内容加1,由于使用的BigInteger,所以要使用其中的add()完成操作),然后将新的内容重新保存在文件中。

网站计数器——Java实现相关推荐

  1. 网站计数器 web映射

    站点的网站计数器的操作 <%@ page import="java.math.BigInteger" %> <%@ page import="java. ...

  2. jsp: 使用application对象实现网站计数器

    任务要求: 在一些站点中,经常会看到网站计数器的功能.要点: 网站的来访人数可能会很多,有可能超过20位整数,大整数类BigInteger 使用application范围的属性保存计数. 用户每次在第 ...

  3. 分别设计网页访问计数器,会话计数器,访问网站计数器。

    张继军 董卫 <java web 应用开发技术与实案列教程>课后习题之第三章第7题 网页访问计数器count1.jsp 会话计数器count2.jsp 访问网站访问计数器count3.js ...

  4. ServletContext实现网站计数器

    在网站开发中,有很多功能需要使用ServletContext,比如: 1.网站计数器 2.网站在线用户的显示 3.简单的聊天系统 总之,如果是涉及到不用用户共享数据,而这些数据量不大,同时又不希望写入 ...

  5. python写网站和java写网站的区别-为什么说Java和Python现阶段并不适合普通网站建设...

    经过20多年的发展,网站开发技术已经非常成熟,用于网站制作的程序语言也有很多.常见的当然是php和asp.net,特别是php程序语言,虽然其已经有很多年历史也历经多次迭代升级,但在凭借其开源.轻巧等 ...

  6. JSP简单练习-网站计数器

    <%@ page contentType="text/html;charset=gb2312" %> <%@ page import="javax.se ...

  7. Java毕设项目二次元文化网站(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目二次元文化网站(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webs ...

  8. php 网站计数器,php网站计数器

    5.5 计数器 让我们在首页上加上一个计数器.这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数.counter.inc包含以下代码: /* || 一个简单的计数器 */ fu ...

  9. php实现一个网站计数器

    以下代码是实现一个网站计数器,并将计数文件保存在本地: 计数器 <?php/** 网站计数器*/$counterFile = "count.dat";//存储计数的文件if( ...

最新文章

  1. AlphaGo Zero,一次成功的炒作而已?
  2. C语言连续指针_只愿与一人十指紧扣_新浪博客
  3. 用db-RDA进行微生物环境因子分析-“ggvegan“介绍
  4. 洛谷 P1049 装箱问题(01背包)
  5. 航院 1874 畅通工程续
  6. python 外部程序 交互_使用Python与其他程序交互
  7. zookeeper 源码阅读(1)
  8. python重装显示already installed_tensorflow安装出现Requirement already satisfied问题,这个是网络问题吗?...
  9. 1954-计算机基础知识大赛 1
  10. C++实现PCA变换
  11. 【云计算学习教程】云计算虚拟化技术和容器技术详解
  12. 赵鹏的《大师之路》教程
  13. 【ZZULIOJ】1096: 水仙花数(函数专题)
  14. html基础、h5c3高级c3动画 、 JavaScript初高级、css预处理器和git 部分面试题
  15. App推广都有哪些渠道?一张图片让你全看明白!
  16. 大数据 客户标签体系_大数据标签体系建立
  17. 前端优化之webpack
  18. 成都计算机专科学院分数线,成都计算机工业职业技术学校2019年招生录取分数...
  19. 第六章-数据库与Access
  20. 三维仿真引擎软件HLCSim有什么用

热门文章

  1. html隐藏换行,css强制换行和超出隐藏实现
  2. ArcGIS标注符号显示动物图案及文字
  3. 在keil上编译linux下的STM32裸机工程 arm 编译器介绍
  4. 后端存储实战课——设计篇
  5. linux第三方软件安装目录
  6. 利用虚拟机复现漏洞 “永恒之蓝”
  7. 《操作系统》——分页存储管理方式逻辑地址到物理地址的转换
  8. 小米盒子3 增强版 体验
  9. Vue 无感刷新token
  10. Java实现调用Udesk API v2(二)