不知道是不是遇到Tomcat7的bug了...

逝水fox 发布于 2013/05/02 21:48
阅读 207
收藏 0

一个很简单的功能,返回验证码

// 输出图片
OutputStream out = response.getOutputStream();
ImageIO.write(image, format, out);
out.flush();
在代码不设置响应的Content-Length时,页面切换图片时即使服务器是localhost,总是有个几秒钟的延迟,用Firebug看,明显图片已经读到浏览器本地了,但是浏览器还在一个劲的等待响应。试过IE9,Chrome和Firefox都有这个问题。把代码改成先写到ByteArrayOutputStream里面,指定了Content-Length再返回数据,就恢复正常了。

想到下午在办公室的时候功能都是好的。办公室用的是Linux下的JDK6+Tomcat6.0.36,而家里用的是Windows的JDK7+Tomcat7.0.32,不知道是否是Tomcat的原因,明天回办公室试下7.0.39有没有这个问题。

加载中
0
红薯
红薯
这种自己输出流数据的,必须设置 Content-Length 哦
逝水fox
逝水fox
回复 @红薯 : 确认了,和Tomcat无关,卡巴斯基的问题...关了就一切正常
红薯
红薯
回复 @逝水fox : 按理说图片不用也 ok ,你看 osc 的验证码生成 http://www.oschina.net/code/snippet_12_2850
逝水fox
逝水fox
恩,但是如果是图片用ImageIO直接输出到response的输出流里面的话,就没法拿到输出的字节数,非要自己从内存中转一下。...下午用Tomcat6都还正常的。
返回顶部
顶部