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

getOutputStream() has already been called for this response

2014-01-26 
Java code%@ page autoFlushfalseimportjava.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,ja

Java code
<%@ page autoFlush="false"  import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*"%>  <%@ page import="com.yourcompany.util.RandomStringUtils"%>  <%   RandomStringUtils rs=new RandomStringUtils();  String random=rs.randomAlphanumeric(4);  session.setAttribute("random",random);  %>  <% out.clear();   response.setContentType("image/jpeg");   response.addHeader("pragma","NO-cache");   response.addHeader("Cache-Control","no-cache");   response.addDateHeader("Expries",0);   int width=100, height=40;   BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);   Graphics g = image.getGraphics();   g.setColor(Color.GRAY);   Font DeFont=new Font("SansSerif", Font.PLAIN, 32);    g.setFont(DeFont);   g.fillRect(0, 0, width, height);   g.setColor(Color.RED);   g.drawString(random,3,30);   g.dispose();   ServletOutputStream outStream = response.getOutputStream();   JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);   encoder.encode(image);   outStream.close();  %>  




麻烦高手看下, 为什么上面的jsp 会发生下面异常
java.lang.IllegalStateException: getOutputStream() has already been called for this response

我发网上的许多关于验证码的代码都是如此,

------解决方法--------------------------------------------------------
不知道lz的tomcat是什么版本的,如果是5或5以下的会有这样的问题,换个高版本的就好了

还有就是注意流的关闭。


------解决方法--------------------------------------------------------
在jsp中BufferedImage 有的时候会有这样的问题,但多数提高了tomcat版本都会好的。
------解决方法--------------------------------------------------------
资源用完了,能释放的都释放掉。
------解决方法--------------------------------------------------------
out应该就是jsp的内置对象,表示response的outputstream
试试:JPEGCodec.createJPEGEncoder(out); 
------解决方法--------------------------------------------------------
http://hwangita.blog.ccidnet.com/blog-htm-do-showone-uid-45279-type-blog-itemid-183837.html
参考下
------解决方法--------------------------------------------------------
ServletOutputStream  outStream  =  response.getOutputStream(); 

在jsp中已经隐含打开了输出流PrintWriter,不妨从这个流中得到字节流

        

热点排行