转:解决在验证码中的:getOutputStream() has already been called for this response异常错误

<% @ 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();
    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.setAttribute(
" rand " , sRand);

    g.dispose();

    ImageIO.write(image, 
" JPEG " , response.getOutputStream());
    out.clear();
    out 
=  pageContext.pushBody();
%>
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值