利用img标签实现的静态的HTML页面访问次数的Servlet
来源:互联网 发布:金勃良知乎 编辑:程序博客网 时间:2024/06/05 19:20
第一次写博客,Java初学者,所有的代码都加上注释,方便以后返回查阅,如有错误请不吝指正。谢谢
文章是从各种书籍中抄写的实例,如有雷同,不胜荣幸;
public class CountServlet extends HttpServlet{
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//告诉浏览器文件类型
resp.setContentType("image/jpeg");
//设置浏览器不要缓存图片
resp.setHeader("Prama", "no-cache");
resp.setHeader("Cache-Control", "no-cache");
resp.setDateHeader("Expires", 0);
//由Servlet引擎使用的抽象类。Servlet通过使用ServletResponse接口的使用获得了对一个这种类型的对象的说明。
ServletOutputStream sos = resp.getOutputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//创建一个内存的映像,即将图片写入到内存
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));
//调用getAccessCount方法,获取value,
String value = getAccessCount(req);
//获取value的长度
int len =value.length();
//如果len大于7
if (len>7) {
//value的最大限制是7位数,超出后上限也是999999+
value ="9999999+";}else{
//小于7就用零来补
String tmp = "";for(int i=0;i<7-len;i++){
tmp = tmp + "0";
}value = tmp + value;
}
//将value‘写在’ x=0,y=18的位置
g.drawString(value, 0, 18);//结束图像的绘画过程,完成绘画
g.dispose();
//将图像以jpeg格式输出
ImageIO.write(image, "JPEG", bos);
resp.setContentLength(b.length);
bos.close();
sos.write(b);
sos.close();
}
//getAccessCount类,返回一个String类型的值
private String getAccessCount(HttpServletRequest res) {//得到引用界面的URL地址,并以此作为访问次数的检索关键字
//referer是头文件里URL地址
String pageKey =res.getHeader("referer");
//如果URL地址为空,返回0
if(pageKey ==null){return"0";
}
//定义一个读取java配置的对象settings
Properties settings = new Properties();//count.txt等内部文件最好保存在web-INF目录中
//获得count.txt文件的路径
String countFilePath = getServletContext().getRealPath("/count.txt");try{
//加载count.txt文件
settings.load(new FileInputStream(countFilePath));}catch (Exception e) {}
String count = "0";
try{
//将pageKey的值赋给count
count = settings.getProperty(pageKey);
//如果count是空的,count就是0
if(count ==null){count="0";
}
//将count转换成数值型并+1赋给c
int c= Integer.parseInt(count) + 1;
//将c转换成字符型并赋给count
count = new Integer(c).toString();
//设置setting的键值
settings.put(pageKey, count);//将this page is accessed 写入到counfilepath
settings.store(new FileOutputStream(countFilePath) ,"this page is accessed");
}catch (Exception ex) {
System.out.println(ex.getMessage());
}
//返回count
return count;}
}
- 利用img标签实现的静态的HTML页面访问次数的Servlet
- 通过img标签调用实现静态页面访问次数统计的简单方法
- 通过img标签调用实现静态页面访问次数统计的简单方法
- php实现静态页面的访问次数统计
- Servlet实现访问次数的例子!
- 利用Jsoup解析html,如何得到<img>标签的位置
- 用Filter程序实现静态HTML页面的访问保护
- HTML的<img>标签基础
- html img标签的使用
- html a标签img标签的认识
- 用jsoup实现html中img标签的替换
- html<img>标签的usemap属性
- HTML中Img标签的技巧
- HTML <img> 标签的 usemap 属性
- HTML <img> 标签的 alt 属性
- HTML <img> 标签的 usemap 属性
- html中<img>标签的路径问题
- HTML之多个IMG标签的间距
- Kafka教程(一)---------------kafka环境的部署(单机版/集群版)
- svn基础命令
- QT之qss教程-QTreeView
- Incorporating organelle correlations intosemi-supervised learning论文分析
- SGU 476 Coach's Trouble(高精度,dfs,容斥)
- 利用img标签实现的静态的HTML页面访问次数的Servlet
- 6.2-(2)
- Git仓库的创建和回退
- npm安装包失败的解决
- 简单了解HTML
- 启动服务器时执行Servlet init方法
- CommonJs、AMD和CMD相同点与区别,前端模块化
- 初识LiveData
- 学习回顾算法(冒泡排序)