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

验证码!该怎么处理

2012-01-01 
验证码!这是一段获得验证码的代码:%@pagecontentType image/jpeg import java.awt.*,java.awt.image

验证码!
这是一段获得验证码的代码:
<%@       page       contentType= "image/jpeg "       import= "java.awt.*,      
    java.awt.image.*,java.util.*,javax.imageio.*,java.io.OutputStream "       %>      
    <%!      
    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());      

    %>    
提示的错误是
java.lang.IllegalStateException:   getOutputStream()   has   already   been   called   for   this   response

该怎么解决?是什么原因引起的?

[解决办法]
做到servlet 里面去就不会有这个错了.
[解决办法]
JSP里默认调用了out输出方法,所以冲突了,你需要加这样几句out.clear();
out = pageContext.pushBody();,就加在最后,你再44:)

热点排行