验证码在IE下报错ImageIO.write
求助大神,在谷歌浏览器运行是正常的,但是在IE就会报错。
生成验证码代码如下:
public String yanzheng(){
int height = 28;
int width = 80;
BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
Random random = new Random();
g.setBackground(getRandColor(200, 250));
g.fillRect(0, 0, width, height);
Font font = new Font("Times New Roman", Font.HANGING_BASELINE, 28);
g.setFont(font);
g.setColor(Color.BLACK);
g.drawRect(0, 0, width-1, height-1);
g.setColor(getRandColor(160, 200));
for(int i = 0; i < 155; i++){
int x = random.nextInt(width);
int y = random.nextInt(height);
int x1 = random.nextInt(12);
int y1 = random.nextInt(12);
g.drawLine(x, y, x1, y1);
}
StringBuffer randomCode = new StringBuffer();
int length = 4;
String base = "abcdefghijklmnopqrstuvwxyz0123456789";
int size = base.length();
for(int i = 0; i < length; i++){
int start = random.nextInt(size);
String str = base.substring(start, start + 1);
g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
g.drawString(str, 15 * i + 6, 24);
randomCode.append(str);
}
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
request.getSession().setAttribute("rand", randomCode.toString());
g.dispose();
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
ServletOutputStream sos;
try{
sos = response.getOutputStream();
ImageIO.write(buffImg, "gif", sos);
sos.flush();
sos.close();
}catch(Exception e){
e.printStackTrace();
}
return null;
}
private 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);
}
在谷歌浏览器下运行很正常。但是在IE下就报错了。报错如下:
Client
AbortException:
java.net.SocketException: Connection reset by peer: socket write error
at org.apache.catalina.c