求验证码代码~~~~~~~~~~~~~最好有说明。数字加字母的

解决方案 »

  1.   

    http://espace.javaeye.com/blog/202418
    http://www.cnblogs.com/ucetgg/archive/2007/12/09/988615.html
      

  2.   

    图片验证码  http://download.csdn.net/source/970523
      

  3.   

    用后台语言写吧,写到cookie里
      

  4.   

    JSP页面的验证码,自己复制出来,重命名为 XXX.JSP就可以了:
    =================================================================================
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,javax.imageio.*"%>
    <%!   
      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);   
                      }   
      %><%   
      //设置页面不缓存   
      response.setHeader("Pragma","No-cache");   
      response.setHeader("Cache-Control","no-cache");   
      response.setDateHeader("Expires",   0);   
        
      //   在内存中创建图象   
      int   width=60,   height=20;   
      BufferedImage   image   =   new   BufferedImage(width,   height,   BufferedImage.TYPE_INT_RGB);   
        
      //   获取图形上下文   
      Graphics   g   =   image.getGraphics();   
        
      //生成随机类   
      Random   random   =   new   Random();   
        
      //   设定背景色   
      g.setColor(getRandColor(200,250));   
      g.fillRect(0,   0,   width,   height);   
        
      //设定字体   
      g.setFont(new   Font("Times   New   Roman",Font.PLAIN,18));   
        
      //画边框   
      //g.setColor(new   Color());   
      //g.drawRect(0,0,width-1,height-1);   
        
      //   随机产生155条干扰线,使图象中的认证码不易被其它程序探测到   
      g.setColor(getRandColor(160,200));   
      for   (int   i=0;i<155;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);   
      }   
        
      //   取随机产生的认证码(4位数字)   
      String   sRand="";   
      for   (int   i=0;i<4;i++){   
              String   rand=String.valueOf(random.nextInt(10));   
              sRand+=rand;   
              //   将认证码显示到图象中   
              g.setColor(new   Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));   
      //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成   
              g.drawString(rand,13*i+6,16);   
      }   
        
      //   将认证码存入SESSION   
      session.setAttribute("rand",sRand);   
        
      //   图象生效   
      g.dispose();   
        
      //   输出图象到页面   
      ImageIO.write(image,   "JPEG",   response.getOutputStream());   
      out.clear();
      out = pageContext.pushBody();
    %>
    <%!
    //取得随机字符
    String getRandomValue(Random random)
    {
    String mask = "2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z";
    String[] masks = mask.split(",");
    return masks[random.nextInt(masks.length)];
    }
    %>
      

  5.   

    http://espace.javaeye.com/blog/202418