首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

session和验证码不同步的有关问题,下

2012-03-28 
session和验证码不同步的问题,高手指点下,为什么我session获取的取总比验证图片里的慢一步啊,高手指点下,

session和验证码不同步的问题,高手指点下,
为什么我session获取的取总比验证图片里的慢一步啊,高手指点下,加分!~
我的验证码用servlet写的,代码:
package   checkDraw;

import   javax.servlet.*;
import   javax.servlet.http.*;
import   java.io.*;
import   java.util.*;
import   com.sun.image.codec.jpeg.*;
import   java.awt.*;
import   com.sun.image.codec.jpeg.*;
import   java.awt.image.BufferedImage;
import   java.awt.image.DataBuffer;
import   java.awt.geom.GeneralPath;
import   javax.swing.*;
import   java.math.*;
public   class   checkServlet
                extends   HttpServlet   {
//Process   the   HTTP   Get   request
        public   void   doGet(HttpServletRequest   request,   HttpServletResponse   response)   throws
                        ServletException,   IOException   {
                  response.setContentType(request.getContentType());
                  response.setContentType( "image/jpeg ");   //必须设置ContentType为image/jpeg
                  response.setHeader( "Pragma ", "No-cache ");      
                  response.setHeader( "Cache-Control ", "no-cache ");      
                  response.setDateHeader( "Expires ",       0);
                  HttpSession   session   =   request.getSession(true);
                int   length   =   4;   //设置默认生成4个数字
                Date   d   =   new   Date();
                long   lseed   =   d.getTime();
                Random   r   =   new   Random();   //设置随机种子
                if   (request.getParameter( "length ")   !=   null)   {
                        try   {
                                length   =   Integer.parseInt(request.getParameter( "length "));
                        }
                        catch   (NumberFormatException   e)   {
                        }
                }
                StringBuffer   str   =   new   StringBuffer();
                for   (int   i   =   0;   i   <   length;   i++)   {
                        str.append(r.nextInt(9));   //生成随机数字
                }
//可以在此加入保存验证码的代码
      session.setAttribute( "Rand ",String.valueOf(str));  


//创建内存图像
                BufferedImage   bi   =   new   BufferedImage(40,   16,   BufferedImage.TYPE_INT_RGB);
                Graphics2D   g   =   bi.createGraphics();
                g.clearRect(0,   0,   16,   40);
                g.setColor(Color.RED);
                g.drawString(str.toString(),   4,   12);
                try   {
//使用JPEG编码,输出到response的输出流
                        JPEGImageEncoder   encoder   =   JPEGCodec.createJPEGEncoder(response.
                                        getOutputStream());
                        JPEGEncodeParam   param   =   encoder.getDefaultJPEGEncodeParam(bi);
                        param.setQuality(1.0f,   false);
                        encoder.setJPEGEncodeParam(param);
                        encoder.encode(bi);
                }
                catch   (Exception   ex)   {
                }
下面是我在JSP页面获取的代码:
<html>
<body>
<form     action= "ConServlet "   name= "form1 "   method= "post ">
<table   width= "228 "   height= "244 "   border= "1 "   align= "center ">
    <!--DWLayoutTable-->
    <tr>
        <td   colspan= "2 ">   &nbsp;&nbsp;&nbsp;专业班主任务周计划系统 </td>
    </tr>
    <tr>
        <td   width= "65 "> 用户名: </td>
        <td   width= "147 "> <input   type= "text "   name= "name "   size= "20 "   /> </td>
    </tr>
    <tr>
        <td> 密&nbsp;&nbsp;码: </td>
        <td> <input   type= "password "   name= "password "   size= "20 "   /> </td>
    </tr>
    <tr>
        <td   height= "39 "   colspan= "2 "   valign= "top "> <table   width= "100% "   border= "0 "   cellpadding= "0 "   cellspacing= "0 ">
            <!--DWLayoutTable-->
            <tr>
                <td   width= "68 "   height= "35 "   align= "center "   valign= "middle "> <div   align= "left "> 验证码: </div> </td>


                <td   width= "77 "   align= "center "   valign= "middle "> <input   type= "text "   name= "c_code "   size= "10 "> </td>
                <td   width= "73 "   rowspan= "2 "   align= "center "   valign= "middle "> <img           src= "checkServlet "   alt= "看不清楚?点击更换验证码 "     width= "50 "   height= "26 "   align= "middle "     onclick= "this.src= 'checkServlet ' "/>

<!--   下面代码是为了检验是否与验证码相同-->
<%   String   random   =   (String)   session.getAttribute( "Rand ");
                        out.println(random);
    %>
    </td>
            </tr>
            <tr>
                <td   height= "1 "> </td>
                <td> </td>
                </tr>
           
        </table>         </td>
        </tr>
    <tr>
        <td   colspan= "2 "> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <input     type= "button "   value= "提交 "   onClick= "check() ">
            &nbsp;&nbsp;
          <input   type= "reset "   value= "重填 "> </td>
    </tr>
</table>
</form>
</body>
</html>
<script   language= "javascript ">

function   check()
{
      if(document.form1.c_code.value!= " <%=session.getAttribute( "code ")%> ")
    {
    alert( "验证码输入错误! ");
    socument.form1.c_code.focus();
    return;
    }
  document.form1.submit();

}

[解决办法]
啥意思?哪里不同步?把现象说明白.

热点排行