我在做一个注册页面时,想应用验证码,但不知如何使用.... 请教...

解决方案 »

  1.   

    去网上查一下 大把的源码  我做项目时就查用过一次. 呵呵
       自己动手吧   有些东西不一定要等别人给你  自己可以查的到的 
    TKS   祝你成功.
      

  2.   

    Image.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
      <%@   page   contentType="image/jpeg"   import="java.awt.*,   
      java.awt.image.*,javax.imageio.*,java.net.*"   %>   
        
      <%!   
      Color   getRandColor(int   fc,int   bc){//random   color   
                      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);   
                      }   
      %>   
      <%   
      //page   no   cache   
      response.setHeader("Pragma","No-cache");   
      response.setHeader("Cache-Control","no-cache");   
      response.setDateHeader("Expires",   0);   
        
      //   create   image   in   memory   
      int   width=60,   height=20;   
      BufferedImage   image   =   new   BufferedImage(width,   height,   BufferedImage.TYPE_INT_RGB);   
        
      //   get   GraphicContext   
      Graphics   g   =   image.getGraphics();   
        
        
      Random   random   =   new   Random();   
        
      //   set   background   
      g.setColor(getRandColor(200,250));   
      g.fillRect(0,   0,   width,   height);   
        
      //set   font   
      g.setFont(new   Font("Times   New   Roman",Font.PLAIN,18));   
        
      //set   border   
      //g.setColor(new   Color());   
      //g.drawRect(0,0,width-1,height-1);   
        
      //   generate   confusing   lines   
      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   bit   random   number   随即写出4个数字
      String   sRand="";   
      for   (int   i=0;i<4;i++){   
              String   rand=String.valueOf(random.nextInt(10));   
              sRand+=rand;   
              //   put   validation   code   to   image   
              g.setColor(new   Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));   
              g.drawString(rand,13*i+6,16);   
      }   
        
      //   save   code   to   SESSION 传递图片中的数字
      session.setAttribute("rand",sRand);   
        
        
      g.dispose();   
        
      //   display   image   
      ImageIO.write(image,   "JPEG",   response.getOutputStream());
      out.clear();
    out = pageContext.pushBody();   
      %>   
    Login.jsp<tr>
    <td>
    验证码:
    </td>
    <td>
    <html:text property="image"></html:text>
    </td>
    <td>
    <img width="60" height="20" src="<%=basePath%>/image.jsp">
    </td>
    </tr>
    loginAction
    String   validatecode=(String)session.getAttribute("rand");
    //获取image.jsp中传递的数字值   
    String   inputcode=logonForm.getImage();
            //从login.jsp中获取文本框输入的值
    if(validatecode.equals(inputcode)){  //如果两个相等
    登陆
    }else   

    String error="验证码错误,请重新输入.....";
      request.setAttribute("error", error);
    return mapping.findForward("fail");
    }
      

  3.   

    你用servlet+applet把它渲染成一个图片,在页面上路径指向这个servlet就可以了
      

  4.   

    找个strust室里看一下,都是在配置上的问题,不用写代码
      

  5.   

    用一个Action的子类就可以搞定了..
    ...要想要的话,加我的QQ我发给你啊..这里太长了..
    ..394777014
      

  6.   

    我的不同步啊从session 获得的值和页面显示的值正好差一步,请教大为大侠指点啊