java2000.net的专栏

愿为喜欢Java的朋友提供一点帮助

赵学庆ID:java2000_net
155162次访问,排名491好友53人,关注者0
Enjoy Java, Enjoy Everyday!
欢迎加入 java2000.net
java2000_net的文章
原创 150 篇
翻译 0 篇
转载 13 篇
评论 595 篇
老紫竹的公告
最近评论
flylovejings:建议很经典,会好好反思下,支持!
wancl:呵呵,不错先藏起来一份.
livewater:看你写的,和自己写出来,是完全不同的两个概念
hollo_hhy:谢谢给我们这么好的建议,非常赞同
mengxing8100:说的很真实
文章分类
收藏
    相册
    公告
    技术文章
    其它
    新春
    友情链接
    JAVA世纪网
    关文柏的专栏
    陈绍英-性能测试实战
    陈跃峰老师的博客
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 一段生成验证码图片的程序收藏

    新一篇: 对HTML 通过GET 方法进行提交后,对信息进行解码JAVA类 | 旧一篇: 导出数据库数据的方法,适合简单的数据库表格结构

    package test;

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.OutputStream;
    import java.util.Random;

    import javax.imageio.ImageIO;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;


    public class ImageGenerator extends HttpServlet {
      
    /**
       * 
       
    */

      
    private static final long serialVersionUID = -3938318741402322164L;

      
    private static Color getRandColor(int fc, int bc) {
        Random random 
    = new Random();
        
    if (fc > 255)
          fc 
    = 255;
        
    if (bc > 255)
          bc 
    = 255;
        
    int r = fc + random.nextInt(bc - fc);
        
    int g = fc + random.nextInt(bc - fc);
        
    int b = fc + random.nextInt(bc - fc);
        
    return new Color(r, g, b);
      }


      
    private static String charsLong = "23456789abcdefghjklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";

      
    private static String charsShort = "0123456789";

      
    private static String chars = charsLong;

      @Override
      
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        
    try {
          
    int charsLength = chars.length();

          response.setHeader(
    "Pragma""No-cache");
          response.setHeader(
    "Cache-Control""no-cache");
          response.setDateHeader(
    "Expires"0);

          
    int width = 70, height = 20;
          BufferedImage image 
    = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

          Graphics g 
    = image.getGraphics();

          Random random 
    = new Random();

          g.setColor(getRandColor(
    200250));
          g.fillRect(
    00, width, height);

          g.setFont(
    new Font("Times New Roman", Font.ITALIC, height));

          g.setColor(getRandColor(
    160200));
          
    for (int i = 0; i < 35; i++{
            
    int x = random.nextInt(width);
            
    int y = random.nextInt(height);
            
    int xl = random.nextInt(12);
            
    int yl = random.nextInt(12);
            g.drawLine(x, y, x 
    + xl, y + yl);
          }


          StringBuilder sRand 
    = new StringBuilder();
          String[] fontNames 
    = "Times New Roman""Arial""Book antiqua""" };

          
    for (int i = 0; i < 4; i++{
            g.setFont(
    new Font(fontNames[random.nextInt(3)], Font.ITALIC, height));
            
    char rand = chars.charAt(random.nextInt(charsLength));
            sRand.append(rand);

            g.setColor(
    new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
            g.drawString(String.valueOf(rand), 
    16 * i + random.nextInt(6+ 3, height - random.nextInt(4));
          }


          g.setColor(getRandColor(
    160200));
          
    for (int i = 0; i < 30; i++{
            
    int x = random.nextInt(width);
            
    int y = random.nextInt(height);
            
    int xl = random.nextInt(width);
            
    int yl = random.nextInt(width);
            g.drawLine(x, y, x 
    + xl, y + yl);
          }


          request.getSession().setAttribute(
    "Login_Image_Code", sRand.toString());

          g.dispose();

          
    try {
            Thread.sleep(
    100);
          }
     catch (Exception ex) {
          }

          OutputStream os 
    = response.getOutputStream();
          ImageIO.write(image, 
    "JPEG", os);
          os.flush();
          os.close();
        }
     catch (Exception ex) {

        }

      }

    }

     

    修改 web.xml

     

    <servlet> 
            <servlet-name>imageGenerator</servlet-name> 
            <servlet-class>test.ImageGenerator</servlet-class> 
        </servlet> 
        <servlet-mapping> 
            <servlet-name>imageGenerator</servlet-name> 
            <url-pattern>/image.jsp</url-pattern> 
        </servlet-mapping>

    发表于 @ 2007年12月21日 05:04:00|评论(loading...)|编辑

    新一篇: 对HTML 通过GET 方法进行提交后,对信息进行解码JAVA类 | 旧一篇: 导出数据库数据的方法,适合简单的数据库表格结构

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 老紫竹