JSP生成验证码4个数字怎么搞高人指点,刚学习啊!
具体验证的时候怎么比较,请指点!

解决方案 »

  1.   

    http://community.csdn.net/Expert/TopicView3.asp?id=4805232
      

  2.   

    <%@ page contentType="image/jpeg" import="java.awt.*,
    java.awt.image.*,java.util.*,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);
    System.out.println(sRand);
    // 图象生效
    g.dispose();// 输出图象到页面
    ImageIO.write(image, "JPEG", response.getOutputStream());
    %>
      

  3.   

    这个是我的JSP页面
     <%@ page contentType="text/html; charset=gb2312" %>
     <%@ page pageEncoding="gb2312"%><html>
    <head>
    <LINK href=site.css rel=stylesheet>
    <title></title>
    <script language="JavaScript">
    <!--if (self != top) top.location.href = window.location.href//-->
    </script><script language=javascript>
    function CheckFormUserLogin()
    {
    if(document.UserLogin.UserName.value=="")
    {
    alert("请输入用户名!");
    document.UserLogin.UserName.focus();
    return false;
    }
    if(document.UserLogin.Passwd.value == "")
    {
    alert("请输入密码!");
    document.UserLogin.Passwd.focus();
    return false;
    }
    if(document.UserLogin.verifycode.value == "")
    {
    alert("请输入验证码!");
    document.UserLogin.verifycode.focus();
    return false;
    }
    }
    </script><style type="text/css">
    <!--
    .style1 {
    font-size: 10.5pt;
    font-weight: bold;
    }
    -->
    </style>
    </head>
    <body bgcolor="#CCCCCC" background="IMAGES/linebg1.gif" topmargin="0" marginheight="0">
    <br>
    <table width="760" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="80">&nbsp;</td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <form method="POST" action="ChkLogin.asp" name="UserLogin" onSubmit="return CheckFormUserLogin();">
    <table width="750" border="0" align=center cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
    <tr>
    <td height="67" colspan="2" align="center"><font color="#000000">&nbsp;<p>&nbsp;</font></td>
    </tr>
    <tr>
    <td height="37" colspan="2" align="center"><span class="style1"><font color=red>用 户 登 录</font></span></td>
    </tr>
    <tr>
    <td width="273" height="176">
    </td>
    <td width="477" height="176" background="IMAGES/admin_4.gif"><table width="350" border="0" align="center" cellpadding="6">
      <tr>
        <td>用户名:
            <input name="UserName" size="15" font face="宋体" style="font-size: 9pt; background-color:#EAEAF4">    </td>
      </tr>
      <tr>
        <td>密&nbsp;&nbsp;码:
            <input type="password" name="Passwd" size="15" font face="宋体" style="font-size: 9pt; background-color:#EAEAF4">    </td>
      </tr>
      <tr>
        <td>验证码:
            <input type="text" name="verifycode" size="15" font face="宋体" style="font-size: 9pt; background-color:#EAEAF4">
            <b><span><font color=#000000></font></span></b> </td>
      </tr>
      <tr>
        <td>
          <p>
            <input type="submit" name="Submit" value="确定" style="font-size: 9pt;  color: #000000; background-color: #EAEAF4; solid #EAEAF4" onMouseOver ="this.style.backgroundColor='#ffffff'" onMouseOut ="this.style.backgroundColor='#EAEAF4'" title="确定">
    &nbsp;
            <input type="reset" name="Submit2" value="重输" style="font-size: 9pt;  color: #000000; background-color: #EAEAF4; solid #EAEAF4" onMouseOver ="this.style.backgroundColor='#ffffff'" onMouseOut ="this.style.backgroundColor='#EAEAF4'" title="重输">
        </p></td>
      </tr>
    </table></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    楼上的楼上的你写的哪个放到那里能运行啊??????????
      

  4.   

    能不能看看在我的这个JSP页面怎么放啊????????/求求你们拉???????????
      

  5.   

    我也试试放了,放不进出呀,
     
    <jsp:include .........
      

  6.   

    <iframe name="yz" frameborder="0" width="100" height="30" scrolling="no" align="middle" src='yanzheng.jsp'>
             </iframe>
    这个可以。但是哪个值怎么传到我的login.jsp页面啊????
      

  7.   

    luojianfeng(赚钱娶个漂亮媳妇)
    帮我解决啊!55555555555555555
      

  8.   

    通过INPUT表单的name对应的值来进行传递啊
    楼上的那个代码可以直接用,在定义一个。jsp 文件就可以
    不过在验证的文件里要调用产生验证码的name对应的值,
    在验证的文件里做个判断就可以了]
    可以这样写:
    String rand = (String)session.getAttribute("rand");
    String input = request.getParameter("rand");if (rand.equals(input)) {
    ;
      }
    else {
      throw new Exception("验证码输入有误!");
    }
      

  9.   

    招聘【职位要求】(1)有上网条件(家中、办公室、网吧);每天能有1-2小时上网时间;会QQ上网聊天、发电子邮件、论坛发贴等即可  【适合人群】1. 大学生— 有较强的上进心,但障于就业形式,竞争压力,并正在寻求创业之路者。2. 办公室白领— 每月固定收入,薪水受限。但又不满足于现状,希望过上更幸福生活者。3. 网虫— 每天花大量的时间聊天, 灌水,玩游戏,不觉得太浪费了吗?你只要从中抽一小部分时间即可。有意愿者,请联系Q:353330947  380620050          Email:[email protected] http://www.wsg8.nud8.com(智慧网络公司代理网站) .欢迎访问..给我一次关注,回报您一个成功的机会 想想妈妈赚钱不容易,不要沉迷在游戏里!是男人的就站起来!!!!
      

  10.   

    编程乐园 Netbeans 群 : 17737684
      

  11.   

    <iframe name="yz" frameborder="0" width="100" height="30" scrolling="no" align="middle" src='yanzheng.jsp'>
             </iframe>
    这个可以。但是哪个验证码怎么传到我的login.jsp页面啊????
    在login.jsp页面我得不到哪个验证码没办法比较啊。请指点。
      

  12.   

    在TIMCAT下用这个程序,为什么每次都抛
    2006-7-3 9:43:23 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet jsp threw exception
    java.lang.IllegalStateException: getOutputStream() has already been called for this response
    at org.apache.catalina.connector.Response.getWriter(Response.java:606)
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195)
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:124)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:117)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:191)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:115)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
    at org.apache.jsp.image_jsp._jspService(org.apache.jsp.image_jsp:127)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
    怎么回事啊!
      

  13.   

    生成的那个可以放到session里,然后再取出来跟表单里的对比
      

  14.   

    <%@ include file="X.jsp" %>
    进来不行阿....
      

  15.   

    <tr>
      <td>验证码:</td>
      <td width="30%">
        <input name="CheckCode" type="text" id="CheckCode" size="8" maxlength="4" style="height:18px;" />
      </td>
      <td width="37%">
        <img src="image.jsp" border="0" align="absmiddle" />
      </td>
    </tr>
    这样写很困难么?我晕,为啥还要放到iframe里?
      

  16.   

    晕..我放在<iframe>里面好难控制...
      

  17.   

    <table border="1" width="90%" cellpadding="0" cellspacing="0">
    <form name="myform" method="post" action="">
    <tr><td valign="bottom" align="right">
    <input type="text" name="checkcode" /></td>
    <td width="37%" valign="middle">
        <img src="code.jsp" border="0" align="absmiddle" />
        </td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="submit" name="Submit" value="提交" /><%=session.getAttribute("rand")%></td>
    </tr>
    </form>
    </table>...这里取到的session和图片显示的不对阿?慢一拍..晕
      

  18.   

    ...这里取到的session和图片显示的不对阿?慢一拍..晕
    楼上的怎么解决啊,大家都帮忙看下啊?
      

  19.   

    为什么你要放到iframe中???不明白
      

  20.   

    <table border="1" width="90%" cellpadding="0" cellspacing="0">
    <form name="myform" method="post" action="">
    <tr><td valign="bottom" align="right">
    <input type="text" name="checkcode" /></td>
    <td width="37%" valign="middle">
        <img src="code.jsp" border="0" align="absmiddle" />
        </td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="submit" name="Submit" value="提交" /><%=session.getAttribute("rand")%></td>
    </tr>
    </form>
    </table>...这里取到的session和图片显示的不对阿?慢一拍..晕
    不是啊楼上已经该成这个拉,不过...这里取到的session和图片显示的不对阿?慢一拍..晕
    楼上的怎么解决啊,大家都帮忙看下啊?
      

  21.   

    ...这里取到的session和图片显示的不对阿?慢一拍..晕这个代码有问题!// 将认证码存入SESSION
    session.setAttribute("rand",sRand);
    System.out.println(sRand);
    // 图象生效在这个千面你们把 sRand值输出来看看是不是慢一拍??如果是就说明!sRand还没生成图片也就是没有任何验证码就把空验证码放到会话里你们说是不是有问题??将上面的放到这个后面就不会慢一拍了
    ImageIO.write(image, "JPEG", response.getOutputStream());
      

  22.   

    public class YzImage
    {
    public String sRand = "";
    public 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);
    }
    public BufferedImage creatImage()
    {
    //    在内存中创建图象
    int width = 62, 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 rand = request.getParameter("rand");
    //   rand = rand.substring(0,rand.indexOf("."));
    sRand="";
    for (int i = 0; i < 4; i++)
    {
    String rand = String.valueOf(random.nextInt(10));
    //String rand =RandomStringUtils.random(1,true,true);

    // 将认证码显示到图象中
    g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110))); //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
    g.drawString(rand, 13 * i + 6, 16);
    //g.drawString(rand, 6, 16);
    sRand =sRand+rand;
    }
    //    图象生效
    g.dispose();
    return image;
    } /**
     * @return
     */
    public String getSRand()
    {
    return sRand;
    }
    }Img.jsp
    <%@ page contentType="image/jpeg" import="javax.imageio.*" %>
    <jsp:useBean id="image" scope="request" class="com.YzImage"/>
    <%
    //设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);// 输出图象到页面
    out.clear();
    ImageIO.write(image.creatImage(), "JPEG", response.getOutputStream());
    // 将认证码存入SESSION
    session.setAttribute("rand",image.sRand);
    System.out.println("=************************="+image.getSRand());
    %> 
    在任何需要用验证码的地方调用。。路径俺你的实际情况修改?
    <img src=Img.jsp>
    在处理页面Rand是验证码的文本表单名字
    String rand= request.getParameter("Rand");
    if (rand.equals(session.getAttribute("rand").toString()))//判断用户输入的验证码和会话里面的验证码是否一样
    {成功后操作~!

    }
    }else
    {
    session.setAttribute("rand", ""); //不成功 清空验证码
    session.setAttribute("LOGIN_MSG", "验证码不正确!请填写正确的验证码!");//返回错误信息
    return new ActionForward(mapping.findForward("fault").getPath(), true);//返回错误页面
    }
      

  23.   

    <%@ page contentType="image/jpeg" import="javax.imageio.*" %>
    <jsp:useBean id="image" scope="request" class="com.YzImage"/>
    <%
    //设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);// 输出图象到页面
    out.clear();
    ImageIO.write(image.creatImage(), "JPEG", response.getOutputStream());
    // 将认证码存入SESSION
    session.setAttribute("rand",image.sRand);
    System.out.println("=************************="+image.getSRand());
    %>很多慢一拍的就是把 session.setAttribute("rand",image.sRand);放到了ImageIO.write(image.creatImage(), "JPEG", response.getOutputStream());前面!能看懂代码就明白原理。。
      

  24.   

    yougucao379548695() ( ) 信誉:100  2006-07-03 14:07:00  得分: 0  
     
     
       不是这样的,按你说的做还是老样子。你自己看看是不是。
      
     
    慢一拍就说明代码延缓执行了。什么原因会延缓执行? 你可以分别把 rand的值在 ImageIO.write前后分别输出到控制台看看到底那个会有值。。
      

  25.   

    // 输出图象到页面
    ImageIO.write(image, "JPEG", response.getOutputStream());
    // 将认证码存入SESSION
    session.setAttribute("rand",sRand);
    System.out.println(sRand);
    // 图象生效
    已经该成这样了在页面上还是慢,这样字验证码永远也填不对啊。
      

  26.   

    <table border="1" width="90%" cellpadding="0" cellspacing="0">
    <form name="myform" method="post" action="">
    <tr><td valign="bottom" align="right">
    <input type="text" name="checkcode" /></td>
    <td width="37%" valign="middle">
        <img src="code.jsp" border="0" align="absmiddle" />><%=session.getAttribute("rand")%>
        </td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="submit" name="Submit" value="提交" /</td>
    </tr>
    </form>
    </table>
    当页面第一次近来时code.jsp还没执行结果是:  空白  null
    刷新一次后才是                              0900  3855  
    再刷新一次是                                0221  0900
                                          2254  0221
    是这样的啊
      

  27.   


    System.out.println(sRand);这个地方输出的数字是不是和 页面显示一样,如果显示一样就正确
    不要在代码里面用这个就<%=session.getAttribute("rand")%>认为他慢一拍。。<%=session.getAttribute("rand")%>这一句执行完了, 你的输出图片的那个还在执行了
      

  28.   

    第一次刷新NULL说明你代码有问题
      

  29.   

    tomuno(特别行动组) 我用了他的代码也测试过没有可能出现第一次刷新为null问题
      

  30.   

    <table width="350" border="0" align="center" cellpadding="6">
      <tr>
        <td>用户名:
            <input name="UserName" size="15" font face="宋体" style="font-size: 9pt; background-color:#EAEAF4">    </td>
      </tr>
      <tr>
        <td>密&nbsp;&nbsp;码:
            <input type="password" name="Passwd" size="15" font face="宋体" style="font-size: 9pt; background-color:#EAEAF4">    </td>
      </tr>
      <tr>
        <td>验证码:
            <input type="text" name="verifycode" size="15" font face="宋体" style="font-size: 9pt; background-color:#EAEAF4">
            <img src="yanzheng.jsp" border="0" align="middle"/>
            <%=session.getAttribute("rand")%>          
         </td>
      </tr>
      <tr>
        <td>
          <p>
            <input type="submit" name="Submit" value="确定" style="font-size: 9pt;  color: #000000; background-color: #EAEAF4; solid #EAEAF4" onMouseOver ="this.style.backgroundColor='#ffffff'" onMouseOut ="this.style.backgroundColor='#EAEAF4'" title="确定">
    &nbsp;
            <input type="reset" name="Submit2" value="重输" style="font-size: 9pt;  color: #000000; background-color: #EAEAF4; solid #EAEAF4" onMouseOver ="this.style.backgroundColor='#ffffff'" onMouseOut ="this.style.backgroundColor='#EAEAF4'" title="重输">
        </p></td>
      </tr>
    </table>
    这个是我的怎么就不对啊
      

  31.   

    我倒塌,,你贴HTML代码干么!
    <%=session.getAttribute("rand")%>这要这干吗。。这个绝对是取得的上一次的值!
    yanzheng.jsp这个里面的代码了
      

  32.   

    楼主我给你完整的吧!
    image.jsp-------------------生成随即验证码图片的jsp页面
    代码如下:
    <%@ page contentType="image/jpeg" import="java.awt.*,
    java.awt.image.*,java.util.*,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);
    }
    %>
    <%
    out.clear();//这句针对resin服务器,如果是tomacat可以不要这句
    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(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);
    }
    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());
    %>login.jsp--------------------登录页面,在这里我是提供输入验证码然后提交进行验证
    代码如下:
    <%@ page language="java" import="java.sql.*" errorPage="" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>用户登录</title>
    <script language="javascript">
      function loadimage(){
        document.getElementById("randImage").src = "image.jsp?"+Math.random();
      }
      </script>
    </head><body><table width="256" border="0" cellpadding="0" cellspacing="0">
      <!--DWLayoutTable-->
      <form action="validate.jsp" method="post" name="loginForm">
      <tr>
        <td width="118" height="22" valign="middle" align="center"><input type="text" name="rand" size="15"></td>
        <td width="138" valign="middle" align="center"><img alt="code..." name="randImage" id="randImage" src="image.jsp" width="60" height="20" border="1" align="absmiddle"></td>
      </tr>
      <tr>
        <td height="36" colspan="2" align="center" valign="middle"><a href="javascript:loadimage();"><font class=pt95>看不清点我</font></a></td>
      </tr>
      <tr>
        <td height="36" colspan="2" align="center" valign="middle"><input type="submit" name="login" value="提交"></td>
      </tr>
      </form>
    </table>
    </body>
    </html>validate.jsp-------------用来验证输入的验证码是否正确
    代码如下:
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
    <%
    String rand = (String)session.getAttribute("rand");
    String input = request.getParameter("rand");
    if(rand.equals(input)){
    out.print("<script>alert('验证通过!');</script>");
    } else{
    out.print("<script>alert('请输入正确的验证码!');location.href='login.jsp';</script>");
    }
    %>以上这三个jsp页面放在和WEB-INF相同的目录下,如果你放在不同的文件夹下,那么里面相关页面的路径你就要自己改了。
      

  33.   

    以上代码测试成功,如有问题请及时和我联系。
    我的MSN是 [email protected]