JAVA 代码如下:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class CountServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("image/jpeg");
// 设置浏览器不要缓存此图片
resp.setHeader("Pragma", "No-cache");
resp.setHeader("Cache-Control", "no-cache");
resp.setDateHeader("Expires", 0);
ServletOutputStream sos = resp.getOutputStream();
BufferedImage image = new BufferedImage(80, 20,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.WHITE);
g.setFont(new Font(null, Font.ITALIC | Font.BOLD, 18));
String value = "1";
try {
value = getAccessCount(req);
} catch (Exception e) {
e.printStackTrace();
}
g.drawString(value, 0, 18);
// 结束图像的绘制过程,完成图像
g.dispose();
ImageIO.write(image, "JPEG", sos);
sos.close();
}
private String getAccessCount(HttpServletRequest req) throws Exception {
// 得到引用页面的URL地址,并以此作为访问次数的检索关键字
String pageKey = req.getHeader("referer");
if (pageKey == null) {
return "0";
}
HttpSession session = req.getSession();
int number = session.isNew() ?1 :Integer.valueOf((null==session.getAttribute("visit")?"1":""+session.getAttribute("visit")));
if (session.getAttribute("visit") == null) {
session.setMaxInactiveInterval(60 * 60 * 24);// 设置最大时效 单位是秒
// count.txt等内部文件最好是保存在WEB-INF目录中
String countFilePath = getServletContext()
.getRealPath("/count.txt");
FileInputStream in = new FileInputStream(countFilePath);
DataInputStream dataIn = new DataInputStream(in);
String v = String.valueOf(dataIn.read());
System.out.println("--------v --"+v );
number = Integer.valueOf(v);
++number;
session.setAttribute("visit", number);// 将未访问设置为访问
in.close();
dataIn.close();
FileOutputStream out = new FileOutputStream(countFilePath);
DataOutputStream dataOut = new DataOutputStream(out);
dataOut.writeInt(number);
out.close();
dataOut.close();
}
return number + "";
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.service(req, resp);
}
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.service(req, res);
}
}
效果如下
问题解决:
相关推荐
【ASP站点访问计数器详解】 ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,用于创建动态交互式网页。在这个场景中,我们讨论的是一个个人制作的、基于ASP的免费站点访问计数器。这个计数器不仅...
网页计数器是一种常见的Web开发技术,用于追踪访问者在特定网页上的访问次数。这个练习1:实现网页计数器功能.zip文件很可能是包含了一系列教程或项目文件,帮助初学者了解如何创建一个简单的网页计数器。下面我们将...
通过定义一个名为`counter`的方法,该方法接收计数器的值,然后将其转换为一系列的数字图像(例如0-9的gif图片)来显示。这种方法可以防止浏览器缓存计数器的值,因为它返回的是动态生成的HTML。 5. **其他事件处理...
【PHP网站计数器】是一种基于PHP编程语言实现的网页访问统计工具,它能够记录网站的访问次数,为网站管理员提供关于网站流量的基本信息。PHP作为服务器端脚本语言,因其开源、跨平台和易学易用的特点,在网页开发...
在本案例中,"Asp.net简单防刷新图片计数器源码" 是一个使用ASP.NET实现的功能,旨在防止用户通过刷新页面来快速增加图片访问计数。这种计数器通常用于统计网站上图片的浏览次数,以了解哪些内容更受欢迎。 **图片...
这些素材通常包含0到9的数字图像,用于显示计数器的当前值。它们可以是静态图片,也可以是动态GIF,以动画形式展示数字的变化过程。在网页设计中,选择合适的数字图片素材能提高计数器的美观度和用户体验。你可以...
在互联网早期,网站统计访问量的一种常见方法是使用“图像命中计数器”。这个方法基于HTML中的`<img>`标签,通过加载一个特殊的小图像来记录每次页面访问。标题"hitcounter:老派图像命中计数器也记录HTTP GET参数...
这种计数器通常会将访问者查看图片的次数存储在数据库或文本文件中,并通过自动生成的数字图片来展示这些统计数据。 在ASP图片计数器的设计中,有几个关键知识点: 1. **服务器端脚本**:ASP代码运行在服务器端,...
在IT领域,"图形计数器"是一种特殊类型的计数器,它以图像的形式展示计数值。这样的设计常用于网站统计访问量或者其他需要可视化显示数字变化的场景。在这个实例中,"数字是图片格式"意味着计数器的每个数字都是一个...
9. **生成计数器图像**:接下来的部分将浏览量转换为一串图像链接,通常是为了在页面上显示一个由数字组成的计数器图像。这一步是可选的,取决于设计需求。 10. **会话变量处理**:最后,使用`Session`对象存储...
"BOOM计数器 v1.0" 是一个专门设计用于图像和文字双模式显示的计数工具。这款计数器软件集成了两种不同的展示方式,既可以以清晰的文字形式显示计数值,也可以通过图片的形式直观地展示变化。这种设计使得它在各种...
计数器图片通常是一个动态生成的图像,通过服务器端脚本或客户端JavaScript实现,能够随着每次页面加载而增加计数值。 一、计数器工作原理 计数器图片的工作原理主要分为两种: 1. 服务器端计数:当用户访问网页...
- **防止并发问题**:如果多个用户同时访问,可能会导致计数器增加不准确。可以使用锁机制(如文件锁`flock()`)或事务处理(如果存储在数据库中)来确保计数的原子性。 - **缓存计数**:频繁读写文件会影响性能,...
在本"JSP计数器源码下载"中,我们可以深入探讨如何使用JSP实现一个简单的网站流量统计功能。 计数器是网站管理中常见的工具,用于追踪访问者数量。在JSP中,我们可以利用内置对象如HttpSession或ServletContext来...
网页计数器是一种在线工具,用于追踪访问者数量,它在早期的网页设计中非常流行。这些计数器通常以数字形式显示,随着时间的推移,每次页面被访问时数字会增加,展示网站的受欢迎程度。在提供的资源中,我们有32套...
根据给定的信息,我们可以将这段内容总结为两个主要部分:CGIC计数器的基本概念以及两个...这两个CGIC计数器程序都实现了对网站访问次数的统计功能,但第二个程序提供了更直观的图像显示方式,使得计数结果更加吸引人。
4. **显示计数器**:在`default.asp`页面上展示更新后的计数值,可能通过`counter_images`中的图像或直接用文本显示。 理解这些概念和技术对于构建一个有效的防止刷新的计数器至关重要,它有助于确保网站流量统计的...
在本案例中,"ASP做的简单的计数器"是一个使用ASP技术实现的网页访问计数器,它可以帮助网站所有者跟踪页面的访问次数。计数器的基本原理是每当页面被访问时,计数器的数值就会增加1。 ASP计数器通常包含以下关键...
在网站中,图片计数器通常以图像的形式显示,每次页面被加载时,计数器会递增,以此来统计页面的访问次数。然而,传统的图片计数器容易受到用户刷新页面的影响,导致计数频繁增加,不准确反映真实的访问情况。 针对...