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);
}
}
效果如下
问题解决:
相关推荐
Visual+C#+2008程序设计经典案例设计与实现 第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 ...案例4 利用Application对象实现网站计数器 案例5 利用Session对象实现留言板 本章小结
目录: 第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 案例3 利用API函数实现动画窗体 ...案例4 利用Application对象实现网站计数器 案例5 利用Session对象实现留言板 本章小结
第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 案例3 利用API函数实现动画窗体 案例4 闪烁动画窗体 ...案例4 利用Application对象实现网站计数器 案例5 利用Session对象实现留言板 本章小结
代码如下:<%@LANGUAGE=”JAVASCRIPT” CODEPAGE=”936″%> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” ... <head> <... charset=gb2312″ />...图片
设计思想 该方法的关键是Cookie技术和动态图像特性的...通过把Web页中的图像映射到一个Images数组,一定条件下修改该数组项的特性,可以实现动态图像显示。本例中,首先预载入一组图像,每次调用该Web页时,随机产生
本书展示一个完整网站的设计和实现过程,详细地介绍动态网页设计和制作的技术和相关理论,全书共分为8章,主要内容包括:动态网站设计概述、动态网站编程环境、网站主页设计与PHP基础、网站计数器设计与PHP文件访问...
实例101 如何实现动态显示图像 实例102 如何以旋转方式显示文字 实例103 如何在图像中添加文字 实例104 如何以图像填充文字线条 实例105 如何实现图形绘制拉伸效果 实例106 如何控制图像的显示方式 实例107 ...
实例101 如何 实现动态显示图像 实例102 如何以旋转方式显示文字 实例103 如何在图像中添加文字 实例104 如何以图像填充文字线条 实例105 如何 实现图形绘制拉伸效果 实例106 如何控制图像的显示方式 实例107 如何...
第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 案例3 利用API函数实现动画窗体 ...案例4 利用Application对象实现网站计数器 案例5 利用Session对象实现留言板 本章小结 ......
64图像函数 65session函数 66拼写检查 67循环中调用函数 68转换所有的标记为PHP 69取得页面的链接 70对分查找法 71文件上传界面 72用PHP4实现顶级域名查询 73日期合法性检查 74检查一个邮政编码 75得到100个随机...
案例2 基数转换计数器 案例3 打印杨晖三角形 案例4 确定一个月的天数 案例5 石头、剪子、布猜拳游戏 案例6 创建动态菜单 案例7 创建工具栏 案例8 递归与全局变量的案例1-打靶程序 案例9 调用VC++.NET中数学...
案例10.4 利用Application对象实现网站计数器 案例10.5 利用Session对象实现留言板 案例10.6 动态上传图像并显示 案例10.7 利用控件显示数据库表中的数据 案例10.8 分页显示数据库表中的数据 案例10.9 动态选择...
59.如何使用Counters组件实现网站访问人数统计 60.如何使用ASPPing组件 61.如何使用ASPHttp组件 62.如何用Visual Basic编写ActiveX DLL及其使用 63.如何远程注册DLL文件 64.如何把ASP代码编写成DLL文件 65.如何在ASP...
│ │ ├─实例101 如何实现动态显示图像 │ │ ├─实例102 如何以旋转方式显示文字 │ │ ├─实例103 如何在图像中添加文字 │ │ ├─实例104 如何以图像填充文字线条 │ │ ├─实例105 如何实现图形绘制拉伸...
Frameworks:特殊的库,可以存放库、框架、图像、声音等资源; Products:包含项目在编译时生成的应用程序(xxx.app); 10.Info.plist文件里的bundle identifier(束标识符) 它是应用程序的唯一标识符,要始终配置,...
实例135 使用COOKIE限制用户访问网站的时间 199 5.5 会话控制 201 实例136 通过SESSION判断用户的权限 201 实例137 通过SESSION禁止页面刷新 203 实例138 通过SESSION存储数据 204 实例139 通过SESSION...
│ ├─实例112 如何以任意比例转换图像大小 │ │ ├─实例88 如何实现大图像浏览 │ │ ├─实例89 如何实现多图像浏览 │ │ ├─实例90 如何以反色方式显示图像 │ │ ├─实例91 如何以浮雕方式...
│ ├─实例112 如何以任意比例转换图像大小 │ │ ├─实例88 如何实现大图像浏览 │ │ ├─实例89 如何实现多图像浏览 │ │ ├─实例90 如何以反色方式显示图像 │ │ ├─实例91 如何以浮雕方式...
- #7570:主题重置后的通知,关于图像再生的警告; - #7576:删除无用的meta_title; - #7573:产品页面模块标签上的两个字样; - #7551:还原已编译资源; - #7516:在钩子模块exec列表之前检查钩子是否...
实例271 清理SESSION缓存提高网站访问的效率 358 第6章 图形图像处理 361 6.1 图像与统计 362 实例272 图形计数器 362 实例273 GD2图形计数器 363 实例274 通过图像显示投票统计结果 365 实例275 通过图像显示密码...