`
gaojingsong
  • 浏览: 1153413 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【实现图像访问计数器】

阅读更多

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);

}

 

}

 

效果如下



 问题解决:



 

  • 大小: 54.7 KB
  • 大小: 65.4 KB
分享到:
评论

相关推荐

    Visual+C#+2008程序设计经典案例设计与实现.rar

    Visual+C#+2008程序设计经典案例设计与实现 第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 ...案例4 利用Application对象实现网站计数器 案例5 利用Session对象实现留言板 本章小结

    Visual C# 2008程序设计经典案例设计与实现

    目录: 第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 案例3 利用API函数实现动画窗体 ...案例4 利用Application对象实现网站计数器 案例5 利用Session对象实现留言板 本章小结

    C#设计经典案例设计与实现

    第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 案例3 利用API函数实现动画窗体 案例4 闪烁动画窗体 ...案例4 利用Application对象实现网站计数器 案例5 利用Session对象实现留言板 本章小结

    javascript入门图片对象(无刷新变换图片)\滚动图像

    代码如下:<%@LANGUAGE=”JAVASCRIPT” CODEPAGE=”936″%> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” ... <head> <... charset=gb2312″ />...图片

    使用JavaScript制作一个简单的计数器的方法

    设计思想  该方法的关键是Cookie技术和动态图像特性的...通过把Web页中的图像映射到一个Images数组,一定条件下修改该数组项的特性,可以实现动态图像显示。本例中,首先预载入一组图像,每次调用该Web页时,随机产生

    PHP动态网页设计与制作案例教程

    本书展示一个完整网站的设计和实现过程,详细地介绍动态网页设计和制作的技术和相关理论,全书共分为8章,主要内容包括:动态网站设计概述、动态网站编程环境、网站主页设计与PHP基础、网站计数器设计与PHP文件访问...

    《Visual C# .NET精彩编程实例集锦》配套光盘文件【全】

    实例101 如何实现动态显示图像 实例102 如何以旋转方式显示文字 实例103 如何在图像中添加文字 实例104 如何以图像填充文字线条 实例105 如何实现图形绘制拉伸效果 实例106 如何控制图像的显示方式 实例107 ...

    Visual C# .NET精彩编程实例集锦

    实例101 如何 实现动态显示图像 实例102 如何以旋转方式显示文字 实例103 如何在图像中添加文字 实例104 如何以图像填充文字线条 实例105 如何 实现图形绘制拉伸效果 实例106 如何控制图像的显示方式 实例107 如何...

    C# 源码 C#2008经典案例

    第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 案例3 利用API函数实现动画窗体 ...案例4 利用Application对象实现网站计数器 案例5 利用Session对象实现留言板 本章小结 ......

    PHP经典100例.

    64图像函数 65session函数 66拼写检查 67循环中调用函数 68转换所有的标记为PHP 69取得页面的链接 70对分查找法 71文件上传界面 72用PHP4实现顶级域名查询 73日期合法性检查 74检查一个邮政编码 75得到100个随机...

    VC++.NET案例开发集锦源代码.part1

    案例2 基数转换计数器 案例3 打印杨晖三角形 案例4 确定一个月的天数 案例5 石头、剪子、布猜拳游戏 案例6 创建动态菜单 案例7 创建工具栏 案例8 递归与全局变量的案例1-打靶程序 案例9 调用VC++.NET中数学...

    Visual C#.NET 2008程序设计案例集锦 (源码)

    案例10.4 利用Application对象实现网站计数器 案例10.5 利用Session对象实现留言板 案例10.6 动态上传图像并显示 案例10.7 利用控件显示数据库表中的数据 案例10.8 分页显示数据库表中的数据 案例10.9 动态选择...

    ASP200问.EXE

    59.如何使用Counters组件实现网站访问人数统计 60.如何使用ASPPing组件 61.如何使用ASPHttp组件 62.如何用Visual Basic编写ActiveX DLL及其使用 63.如何远程注册DLL文件 64.如何把ASP代码编写成DLL文件 65.如何在ASP...

    C#源码大集合 02(共3卷)

    │ │ ├─实例101 如何实现动态显示图像 │ │ ├─实例102 如何以旋转方式显示文字 │ │ ├─实例103 如何在图像中添加文字 │ │ ├─实例104 如何以图像填充文字线条 │ │ ├─实例105 如何实现图形绘制拉伸...

    object c/iphone 开发 试题

    Frameworks:特殊的库,可以存放库、框架、图像、声音等资源; Products:包含项目在编译时生成的应用程序(xxx.app); 10.Info.plist文件里的bundle identifier(束标识符) 它是应用程序的唯一标识符,要始终配置,...

    PHP程序开发范例宝典III

    实例135 使用COOKIE限制用户访问网站的时间 199 5.5 会话控制 201 实例136 通过SESSION判断用户的权限 201 实例137 通过SESSION禁止页面刷新 203 实例138 通过SESSION存储数据 204 实例139 通过SESSION...

    C#源码大集合 01(共3卷)

    │ ├─实例112 如何以任意比例转换图像大小 │ │ ├─实例88 如何实现大图像浏览 │ │ ├─实例89 如何实现多图像浏览 │ │ ├─实例90 如何以反色方式显示图像 │ │ ├─实例91 如何以浮雕方式...

    C#源码大集合 03(共3卷)

    │ ├─实例112 如何以任意比例转换图像大小 │ │ ├─实例88 如何实现大图像浏览 │ │ ├─实例89 如何实现多图像浏览 │ │ ├─实例90 如何以反色方式显示图像 │ │ ├─实例91 如何以浮雕方式...

    PrestaShop v1.7.1.1 中文版.zip

    - #7570:主题重置后的通知,关于图像再生的警告; - #7576:删除无用的meta_title; - #7573:产品页面模块标签上的两个字样; - #7551:还原已编译资源; - #7516:在钩子模块exec列表之前检查钩子是否...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例271 清理SESSION缓存提高网站访问的效率 358 第6章 图形图像处理 361 6.1 图像与统计 362 实例272 图形计数器 362 实例273 GD2图形计数器 363 实例274 通过图像显示投票统计结果 365 实例275 通过图像显示密码...

Global site tag (gtag.js) - Google Analytics