Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 564|回复: 0

[servlet学习]简单的servlet计数器

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-10 06:59:38 | 显示全部楼层 |阅读模式
    说明: 请直接存放在tomcat/webapps/ 下则可使用
    会直接输出Jpg的计数器
    请用HTML语法 img src=http://ip:port/count/countPng

    环境
    java: j2sdk1.4.2以上
    Version: Apache Tomcat/5.0.30 以上

    request 参数
    bgr=0&bgg=0&bgb=0&size=24&fr=255&fg=255&
        fb=255&f=Courier
    背景R G B的颜色分别为: bgr bgg bgb
    前景R G B的颜色分别为: fr fg fb
    字型大小 size
    字体 f (只吃英文)  
      
      
      使用方法
    http://ip:port/count/countPng
    http://ip:port/count/countPng?bgr=0&bgg=0&bgb=0&size=24&fr=255&fg=255&fb=255&f=Courier  运行图: 主要代码:
    1. package web;
    2. import java.awt.*;
    3. import java.awt.image.BufferedImage;
    4. import java.io.*;
    5. import java.util.Date;
    6. import javax.imageio.ImageIO;
    7. import javax.servlet.*;
    8. import javax.servlet.http.*;
    9. public class Web_count1 extends HttpServlet
    10. {
    11.     public Web_count1()
    12.     {
    13.     }
    14.     public void init(ServletConfig config)
    15.         throws ServletException
    16.     {
    17.         super.init(config);
    18.     }
    19.     public void doGet(HttpServletRequest req, HttpServletResponse res)
    20.         throws ServletException, IOException
    21.     {
    22.         doPost(req, res);
    23.     }
    24.     public void doPost(HttpServletRequest req, HttpServletResponse res)
    25.         throws ServletException, IOException
    26.     {
    27.         int bgr;
    28.         if(req.getParameter("bgr") == null || req.getParameter("bgr").equals(""))
    29.             bgr = 121;//背景色中的红色值
    30.         else
    31.             bgr = Integer.parseInt(req.getParameter("bgr"));
    32.         int bgg;
    33.         if(req.getParameter("bgg") == null || req.getParameter("bgg").equals(""))
    34.             bgg = 82;//背景色中的绿色值
    35.         else
    36.             bgg = Integer.parseInt(req.getParameter("bgg"));
    37.         int bgb;
    38.         if(req.getParameter("bgb") == null || req.getParameter("bgb").equals(""))
    39.             bgb = 205;//背景色中的兰色值勤
    40.         else
    41.             bgb = Integer.parseInt(req.getParameter("bgb"));
    42.         int size;
    43.         if(req.getParameter("size") == null || req.getParameter("size").equals(""))
    44.             size = 24;//字体大小
    45.         else
    46.             size = Integer.parseInt(req.getParameter("size"));
    47.         int fr;
    48.         if(req.getParameter("fr") == null || req.getParameter("fr").equals(""))
    49.             fr = 255;//字体颜色值中的红色值
    50.         else
    51.             fr = Integer.parseInt(req.getParameter("fr"));
    52.         int fg;
    53.         if(req.getParameter("fg") == null || req.getParameter("fg").equals(""))
    54.             fg = 255;//字体颜色值中的绿色值
    55.         else
    56.             fg = Integer.parseInt(req.getParameter("fg"));
    57.         int fb;
    58.         if(req.getParameter("fb") == null || req.getParameter("fb").equals(""))
    59.             fb = 255;//字体颜色值中的兰色值
    60.         else
    61.             fb = Integer.parseInt(req.getParameter("fb"));
    62.         String f;
    63.         if(req.getParameter("f") == null || req.getParameter("f").equals(""))
    64.             f = "Courier";//字体名
    65.         else
    66.             f = req.getParameter("f");
    67.         res.setContentType("image/jpeg");
    68.         HttpSession session = req.getSession(true);
    69.         String url = getServletContext().getRealPath("/");
    70.         if(!session.isNew())
    71.         {
    72.             Date halfAgo = new Date((long)((double)System.currentTimeMillis() - 1800000D));
    73.             Date create = new Date(session.getLastAccessedTime());
    74.             if(create.before(halfAgo))
    75.             {
    76.                 session.invalidate();
    77.                 session = req.getSession(true);
    78.             }
    79.         }
    80.         Integer count = (Integer)session.getAttribute("tracker.count");
    81.         if(count == null)
    82.             count = new Integer(got_count(url));//增加计数
    83.         session.setAttribute("tracker.count", count);
    84.         String str = new String(session.getAttribute("tracker.count").toString());
    85.         BufferedImage outimg = out_image(url, (new String("0000000" + str)).substring(
    86.          ("0000000" + str).length() - 7, ("0000000" + str).length()), bgr, bgg, bgb, size, f, fr, fg, fb);
    87.         ServletOutputStream sos = res.getOutputStream();
    88.         ImageIO.write(outimg, "PNG", sos);
    89.         sos.close();
    90.         res.flushBuffer();
    91.     }
    92.     public void destroy()
    93.     {
    94.         super.destroy();
    95.     }
    96.     public String getServletInfo()
    97.     {
    98.         return "Servlet Call Test";
    99.     }
    100.     private int got_count(String url)
    101.     {
    102.         File f = new File(url, "count.txt");
    103.         String str = "0";
    104.         try
    105.         {
    106.             if(!f.exists())
    107.             {
    108.                 f.createNewFile();
    109.                 FileWriter fo = new FileWriter(f);
    110.                 fo.write("0".toString());
    111.                 fo.close();
    112.             }
    113.             FileReader fi = new FileReader(f);
    114.             StringBuffer sb = new StringBuffer("");
    115.             for(int ch = 0; (ch = fi.read()) != -1;)
    116.                 sb.append((char)ch);
    117.             fi.close();
    118.             f = null;
    119.             str = new String(String.valueOf(Integer.parseInt(sb.toString()) + 1));
    120.             FileWriter fw = new FileWriter(url + "count.txt");
    121.             fw.write(str);
    122.             fw.close();
    123.             f = null;
    124.         }
    125.         catch(Exception e)
    126.         {
    127.             System.out.println(e.toString());
    128.         }
    129.         return Integer.parseInt(str.toString());
    130.     }
    131.     private BufferedImage out_image(String url, String count, int bgr, int bgg, int bgb, int size, String f,
    132.             int fr, int fg, int fb)
    133.     {
    134.         Font font = new Font(f, 1, size);
    135.         Color bg = new Color(bgr, bgg, bgb);
    136.         Color fontcolor = new Color(fr, fg, fb);
    137.         int width = 112;
    138.         int height = 21;
    139.         BufferedImage image = new BufferedImage(width, height, 1);
    140.         Graphics g = image.getGraphics();
    141.         g.setColor(bg);
    142.         g.fillRect(0, 0, width, height);
    143.         g.setFont(font);
    144.         FontMetrics fm = g.getFontMetrics(font);
    145.         g.setColor(fontcolor);
    146.         g.drawString(count, (width - fm.stringWidth(count)) / 2, (0 + fm.getHeight()) / 2);
    147.         return image;
    148.     }
    149. }
    复制代码

       
         
         
          
          

            
          

          
          
         
       
      
      


    源码下载:http://file.javaxxz.com/2014/10/10/065937906.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-22 16:23 , Processed in 0.345636 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表