网上多的很CSDN首页上就有文章介绍这个http://dev.csdn.net/article/28/28247.shtm

解决方案 »

  1.   

    随机数+session+图像生成引擎
      

  2.   

    可以说详细点吗
    我在网上搜到的图像生成引擎没有找到JAVA的类包。
      

  3.   

    <%--
      名称:image.jsp
      功能:认证码图象生成(根据页面参数rand,
       生成认证码图象并设定SESSION变量rand)
      作者:纵横软件制作中心雨亦奇([email protected])
      时间:2003年8月2日
    --%>
    <%@ page contentType="image/jpeg" import="java.awt.*,
    java.awt.image.*,java.util.*,javax.imageio.*" %>
    <%
    // 在内存中创建图象
    int width=160, height=40;
    BufferedImage image = new BufferedImage(width, height,
     BufferedImage.TYPE_INT_RGB);// 获取图形上下文
    Graphics g = image.getGraphics();// 设定背景色
    g.setColor(Color.blue);
    g.fillRect(0, 0, width, height);//画边框
    /*g.setColor(Color.black);
    g.drawRect(0,0,width-1,height-1);*/// 取随机产生的认证码(4位数字)
    String rand = request.getParameter("rand");
    if ((rand == null) || rand.equals("")) {
        rand = "0123456789";
    }
    /*rand = rand.substring(0,rand.indexOf("."));
    switch(rand.length())
    {
     case 1: rand = "000"+rand; break;
     case 2: rand = "00"+rand; break;
     case 3: rand = "0"+rand; break;
     default: rand = rand.substring(0,4); break;
    }*/// 将认证码存入SESSION
    session.setAttribute("rand",rand);// 将认证码显示到图象中
    g.setColor(Color.yellow);
    g.setFont(new Font("Times New Roman",Font.PLAIN + Font.ITALIC,24));
    g.drawString(rand,0,30);// 随机产生88个干扰点,使图象中的认证码不易被其它程序探测到
    /*Random random = new Random();
    for (int i=0;i<88;i++)
    {
     int x = random.nextInt(width);
     int y = random.nextInt(height);
     g.drawLine(x,y,x,y);
    }*/// 图象生效
    g.dispose();// 输出图象到页面
    ImageIO.write(image, "JPEG", response.getOutputStream());%>