网站计数器——Java实现
网站计数器必须注意以下三个问题:
(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实现相关推荐
- 网站计数器 web映射
站点的网站计数器的操作 <%@ page import="java.math.BigInteger" %> <%@ page import="java. ...
- jsp: 使用application对象实现网站计数器
任务要求: 在一些站点中,经常会看到网站计数器的功能.要点: 网站的来访人数可能会很多,有可能超过20位整数,大整数类BigInteger 使用application范围的属性保存计数. 用户每次在第 ...
- 分别设计网页访问计数器,会话计数器,访问网站计数器。
张继军 董卫 <java web 应用开发技术与实案列教程>课后习题之第三章第7题 网页访问计数器count1.jsp 会话计数器count2.jsp 访问网站访问计数器count3.js ...
- ServletContext实现网站计数器
在网站开发中,有很多功能需要使用ServletContext,比如: 1.网站计数器 2.网站在线用户的显示 3.简单的聊天系统 总之,如果是涉及到不用用户共享数据,而这些数据量不大,同时又不希望写入 ...
- python写网站和java写网站的区别-为什么说Java和Python现阶段并不适合普通网站建设...
经过20多年的发展,网站开发技术已经非常成熟,用于网站制作的程序语言也有很多.常见的当然是php和asp.net,特别是php程序语言,虽然其已经有很多年历史也历经多次迭代升级,但在凭借其开源.轻巧等 ...
- JSP简单练习-网站计数器
<%@ page contentType="text/html;charset=gb2312" %> <%@ page import="javax.se ...
- Java毕设项目二次元文化网站(java+VUE+Mybatis+Maven+Mysql)
Java毕设项目二次元文化网站(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webs ...
- php 网站计数器,php网站计数器
5.5 计数器 让我们在首页上加上一个计数器.这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数.counter.inc包含以下代码: /* || 一个简单的计数器 */ fu ...
- php实现一个网站计数器
以下代码是实现一个网站计数器,并将计数文件保存在本地: 计数器 <?php/** 网站计数器*/$counterFile = "count.dat";//存储计数的文件if( ...
最新文章
- AlphaGo Zero,一次成功的炒作而已?
- C语言连续指针_只愿与一人十指紧扣_新浪博客
- 用db-RDA进行微生物环境因子分析-“ggvegan“介绍
- 洛谷 P1049 装箱问题(01背包)
- 航院 1874 畅通工程续
- python 外部程序 交互_使用Python与其他程序交互
- zookeeper 源码阅读(1)
- python重装显示already installed_tensorflow安装出现Requirement already satisfied问题,这个是网络问题吗?...
- 1954-计算机基础知识大赛 1
- C++实现PCA变换
- 【云计算学习教程】云计算虚拟化技术和容器技术详解
- 赵鹏的《大师之路》教程
- 【ZZULIOJ】1096: 水仙花数(函数专题)
- html基础、h5c3高级c3动画 、 JavaScript初高级、css预处理器和git 部分面试题
- App推广都有哪些渠道?一张图片让你全看明白!
- 大数据 客户标签体系_大数据标签体系建立
- 前端优化之webpack
- 成都计算机专科学院分数线,成都计算机工业职业技术学校2019年招生录取分数...
- 第六章-数据库与Access
- 三维仿真引擎软件HLCSim有什么用