第一个:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.io.*"%>
<%!
// 读取文件
public int load(String path){
int temp = 0 ;
try{
File f = new File(path) ;
BufferedReader buf = new BufferedReader(new InputStreamReader(new FileInputStream(f))) ;
String str = buf.readLine() ;
temp = Integer.parseInt(str) ;
buf.close() ;
}catch(Exception e){}
return temp ;
}
public synchronized void save(int c,String path){ // 需要同步
try{
File f = new File(path) ;
PrintStream ps = new PrintStream(new FileOutputStream(f)) ;
ps.print(c) ;
ps.close() ;
}catch(Exception e){}
}
%>
<%
String path = getServletContext().getRealPath("/") + "count.txt" ;
int count = load(path) ;
%>
<%
if(session.isNew()){ // 如果是第一次访问
save(++count,path) ;
}
%>
<h2>您是第位<%=count%>访问者!!</h2>
第二个:
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.math.*"%>
<html>
<head><title> 网站统计 </title></head>
<body>
<%!
BigInteger count = null ;
%>
<%!
public BigInteger load(File file){
BigInteger count = null ; // 接收数据
try{
if(file.exists()){
Scanner scan = new Scanner(new FileInputStream(file)) ;
if(scan.hasNext()){
count = new BigInteger(scan.next()) ;
}
scan.close() ;
} else { // 应该保存一个新的,从0开始
count = new BigInteger("0") ;
save(file,count) ; // 保存一个新的文件
}
}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"; // 这里面保存所有的计数的结果
System.out.println(fileName) ;
File file = new File(fileName) ;
if(session.isNew()){
synchronized(this){
count = load(file) ; // 读取
count = count.add(new BigInteger("1")) ; // 再原本的基础上增加1。
save(file,count) ;
}
}
%>
<h2>您是第<%=count==null?0:count%>位访客!</h2>
</body>
</html>
2个页面都是用application完成的一个网站的计数器操作,每次当有新的用户来的时候,就要求记录的数字加1,在用来第一次来的时候进行计算.在WEB根目录中创建count.txt的文件.
application保存的内容可以让所有人共同访问,getServletContext()方法就是application. getRealPath方法可以取得虚拟目录对应的绝对路径.
application是ServletContext接口的对象,表示的是整个容器的上下文.
通过IO操作,读取count.txt中的数字并保存.两者的save方法基本相似,但在load方法上有所不同,第一个只是简单的读取了count.txt中的内容,而第二个在读取时判断的文件的完整性,而且使用了BigInteger作为返回类型,有利于大流量的访问统计.
分享到:
相关推荐
这两个监听器在Servlet容器启动和关闭时,以及用户会话创建和销毁时分别触发相应的回调方法。 - `contextInitialized()`方法在Servlet容器启动时执行,初始化在线人数计数器并将初始值设置为0,存储在...
在这个主题中,我们将深入探讨JSP的核心概念、动态网站开发的基本流程以及如何实现一个简单的网站计数器。 首先,JSP是基于Java的服务器端脚本语言,它将HTML、XML或其他标记语言与Java代码结合,使得开发者能够在...
【vuex简易计数器】是一个使用Vue.js和Vuex框架构建的简单示例应用,主要展示如何在Vue组件之间共享状态和管理数据流。Vuex是Vue.js的一个官方插件,它为Vue应用程序提供了集中式的的状态管理模式,帮助开发者更好地...
在Quartus II中,将这两个Verilog文件编译并综合,然后进行仿真。通过仿真波形图,我们可以直观地看到计数器在不同输入条件下的行为,验证其是否满足模24计数器的要求。 总的来说,这个项目提供了使用Quartus II和...
- **方式3**:仅对Timer1有效,两个8位定时器分别工作在方式0或方式1。 3. **计时器的编程** - **设置工作模式**:通过写入TMOD寄存器的不同位来选择定时器的工作模式。 - **设定初始值**:通过写入THx和TLx...
在这个场景下,它可能包含了如何设置和使用这两个计数器的详细步骤,包括如何在服务器上配置SSI支持,如何将计数器代码嵌入到网页中,以及如何查看和解释统计结果。 总的来说,"计数器一"和"计数器二"代表了两种...
Java 简易计数器由两个主要类组成:`Main` 类和 `MyFrame` 类。其中,`Main` 类是应用程序的入口点,负责创建 `MyFrame` 对象,而 `MyFrame` 类则是应用程序的主要类,负责创建图形用户界面和处理用户交互。 ...
标题中的“51单片机做的一个两位计数器”指的是使用51系列单片机设计的一个能够进行两位数字加减计数的装置。51单片机是微电子技术中广泛应用的一种8位微处理器,由Intel公司开发,现在主要由其他厂商生产,如Atmel...
在"mfc简易加法计数器"项目中,我们将会探讨如何在Windows 7平台上使用MFC来开发一个简单的加法计算器。 **一、MFC基础** 1. **MFC架构**:MFC由多个部分组成,包括框架类、视图类、文档类、对话框类等。这些类为...
单片机计数器是电子工程领域中一个...通过这个简单的例子,我们可以学习到单片机基础操作、计数器原理、中断处理以及输入输出控制等关键知识。这不仅是一个很好的实践项目,也是进一步探索复杂嵌入式系统设计的基础。
首先,我们需要设计一个简单的数据库表来存储网站的访问计数。这个表通常包含两个字段:`id`(主键,标识计数器)和`count`(整型,表示访问次数)。例如,创建一个名为`visits`的表,SQL语句如下: ```sql ...
在这个"ASP.NET简单计数器"的示例中,我们将探讨如何使用ASP.NET的两种关键概念——`Application`对象和`Session`对象来实现一个简单的访问计数功能。 首先,我们来看`Application`对象。在ASP.NET中,`Application...
5. **JSP页面**:创建两个JSP页面,一个用于显示计数器的值,另一个可能是用于触发计数器增加的页面。在显示计数器值的页面中,可以通过`<jsp:useBean>`和`<jsp:getProperty>`标签来获取ActionForm中的计数器值。 6...
2. **分桶计数**:在高并发场景下,为了避免单个计数器的性能瓶颈,可以使用多个计数器(分桶),每个桶负责一部分流量,定期进行汇总。 3. **持久化**:虽然Memcached数据存储在内存中,但可以通过定期将计数器数据...
总的来说,这款“小巧的网站条形码计数器”是一款针对个人或小型网站的简易统计工具,旨在提供基本的访问量统计,帮助网站管理者获取直观的数据反馈,进行有效的网站管理和优化。对于那些不需要复杂分析功能,只需要...
本文将详细介绍如何使用jsp和javaBean技术实现一个简单的网站访问计数器功能。此计数器适用于初学者,不仅可以帮助理解jsp的基本用法,还能加深对javaBean在实际项目中的运用。以下内容将涵盖项目的整体架构、各个...
在本文中,我们将深入探讨如何使用Qt框架来创建一个具有两个计数器页面的应用程序,并通过菜单栏进行页面切换。Qt是一个跨平台的C++图形用户界面库,它提供了丰富的功能,可以方便地构建桌面、移动甚至嵌入式系统的...
本设计使用VHDL语言实现了一个简单的三位显示的数字频率计数器,且已经通过了综合验证,这意味着该设计可以成功地在硬件上实现。 首先,我们来看二分频模块(div_2)。二分频是频率计数器的基础,它将输入时钟...
扭环计数器,也称为扭环形计数器,与环形计数器类似,但其反馈路径不是简单的反相器,而是通过多个反相器和非门组合,形成一个“扭环”形状的逻辑路径。扭环计数器可以实现非模2的计数,即它的计数步长可以是任意正...