MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
今天做一个jsp的验证码程序,把验证码的绘制写在一个jsp里,发现在调用时总是出现getOutputStream() has already been called for this response异常,搞得一头雾水,看似自己重复调用了,因为在程序最后是这样输出的
ImageIO.write(image, “JPEG”, response.getOutputStream());
但是仔细检查了程序,并没有问题,不过最后还是解决了,问题出在%>与<%之间的空行,把换行都去掉就OK了。
因为Application Server在处理编译jsp时对于%>和<%之间的内容一般是原样输出,而且默认是PrintWriter,而你却要进行流输 出:ServletOutputStream,这样做相当于试图在Servlet中使用两种输出机制,就会发生getOutputStream() has already been called for this response的错误
详细请见《More Java Pitfill》一书的第二部分 Web层Item 33:试图在Servlet中使用两种输出机制 270
而且如果有换行,对于文本文件没有什么问题,但是对于其它格式,比如AutoCAD、Word、Excel等文件
下载下来的文件中就会多出一些换行符0×0d和0×0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。

只有注册用户登录后才能发表评论。


网站导航: