婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > tomcat6下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法

tomcat6下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法

熱門標簽:南京新思維電話機器人 泰州泰興400電話 怎么申請 企業怎么在聯通申請400電話 好操作的電話機器人廠家 百度地圖添加標注圖標樣式 如何用中國地圖標注數字點 南昌市地圖標注app 地圖標注市場怎么樣 聊城智能電銷機器人外呼

1.在tomcat6.0下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法

  在tomcat6.0下jsp中出現此錯誤一般都是在jsp中使用了輸出流(如輸出圖片驗證碼,文件下載等),沒有妥善處理好的原因。

  具體的原因就是:
  在tomcat中jsp編譯成servlet之后在函數_jspService(HttpServletRequest request, HttpServletResponse response)的最后有一段這樣的代碼

復制代碼 代碼如下:
finally {
    if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
}

  這里是在釋放在jsp中使用的對象,會調用response.getWriter(),因為這個方法是和response.getOutputStream()相沖突的!所以會出現以上這個異常。

  然后當然是要提出解決的辦法,其實挺簡單的(并不是和某些朋友說的那樣--將jsp內的所有空格和回車符號所有都刪除掉),在使用完輸出流以后調用以下兩行代碼即可:

復制代碼 代碼如下:
out.clear();
out = pageContext.pushBody();

  最后這里是一個輸出彩色驗證碼例子(這樣的例子幾乎隨處可見)

imag.jsp

%@ page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
%@ page import="java.io.OutputStream" %>
%!
  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);
  }
 %>
%
  try{
    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);
    OutputStream os=response.getOutputStream();
    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;i155;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 j=0;j4;j++){
      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*j+6,16);
    }
    session.setAttribute("rand",sRand);
    g.dispose();

    ImageIO.write(image, "JPEG",os);
    os.flush();
    os.close();
    os=null;
    response.flushBuffer();
    out.clear();
    out = pageContext.pushBody();
  }catch(IllegalStateException e){
      System.out.println(e.getMessage());
    e.printStackTrace();
  }
%>

  如有不足之處,歡迎斧正!

2.getOutputStream() has already been called for this response問題的解決

  在jsp向頁面輸出圖片的時候,使用response.getOutputStream()會有這樣的提示:java.lang.IllegalStateException:getOutputStream() has already been called for this response,會拋出Exception

  原因一:
  JSP默認的輸出流為PrintWriter ,即% %>以外的東西所默認的輸出方式,如果你嘗試在JSP中使用ServletOutputStream就會引起錯誤.要嘛直接改用Servlet輸出(復寫service方法),要嘛刪除除%>%中的任何東西(包括HTML標簽,空格,回車等東西)應該就可以。對于這樣的情況應該這樣來解決,刪除%>%之間的所有內容包括空格和換行符,最后也要消除空格和換行符,最好再加上一句response.reset()。

  原因二: 

  在J2EE的API參考里有這么個:

  ServletResponse的getWriter()方法里會拋出這個異常:

    IllegalStateException - if the getOutputStream method has already been called for this response object

  而它的getOutputStream()方法里會拋出這個異常:

    IllegalStateException - if the getOutputStream method has already been called for this response object

  并且兩者的函數申明里都有這么樣的一句

    Either this method or getOutputStream() may be called to write the body, not both.
    Either this method or getWriter() may be called to write the body, not both.


  以上說明也解釋了為什么在往頁面中寫入圖片的時候要使用如下循環格式

復制代碼 代碼如下:
OutputStream output=response.getOutputStream();
while((len=in.read(b)) >0) {
  output.write(b,0,len);
}
output.flush();

而不是把response.getOutputStream().write()放到循環體內

在頁面中直接寫:

復制代碼 代碼如下:
body bgcolor="#ffffff">
h1>
%
    response.getOutputStream();
%>
/h1>
/body>

將會出現錯誤消息如下:

java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.catalina.connector.Response.getWriter(Response.java:604)
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)

以上就是tomcat6下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法的全部內容,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Tomcat常見異常及解決方案代碼實例
  • SpringBoot項目打包發布到外部tomcat(出現各種異常的解決)
  • 一次因信號量引發的tomcat異常退出解決
  • tomcat加載jar異常問題的分析與解決
  • 啟動tomcat時 錯誤: 代理拋出異常 : java.rmi.server.ExportException: Port already in use: 1099的解決辦法
  • 解決idea2020.2遇到pom.xml文件報錯maven插件tomcat7的問題
  • 解決IDEA配置tomcat啟動報錯問題
  • 解決idea導入ssm項目啟動tomcat報錯404的問題
  • tomcat啟動報錯:java.util.zip.ZipException的解決方法
  • tomcat異常解決(Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986)

標簽:臨汾 烏蘭察布 開封 自貢 山南 白銀 吉林 銅川

巨人網絡通訊聲明:本文標題《tomcat6下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法》,本文關鍵詞  tomcat6,下,jsp,出現,getOutputStream,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《tomcat6下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法》相關的同類信息!
  • 本頁收集關于tomcat6下jsp出現getOutputStream() has already been called for this response異常的原因和解決方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    97久久精品人人做人人爽50路| 中文字幕免费不卡在线| 成人精品视频网站| 国产精品一区在线| 国产精品自拍三区| 成人激情动漫在线观看| 99国产精品视频免费观看| 成人sese在线| 91一区二区在线| 色婷婷久久久综合中文字幕| 91同城在线观看| 欧美调教femdomvk| 欧美日韩国产免费一区二区| 欧美一级片在线看| 久久久综合九色合综国产精品| 亚洲精品在线三区| 国产精品免费丝袜| 亚洲电影在线免费观看| 老司机精品视频一区二区三区| 韩国精品久久久| 99久久亚洲一区二区三区青草| 在线视频综合导航| 日韩视频123| 中文字幕一区三区| 天涯成人国产亚洲精品一区av| 久久精品二区亚洲w码| 成人激情电影免费在线观看| 在线看日本不卡| 日韩欧美一区二区视频| 中文字幕二三区不卡| 亚洲一区国产视频| 国产乱码一区二区三区| 色美美综合视频| 欧美哺乳videos| 亚洲综合自拍偷拍| 国产一区免费电影| 欧美日韩国产一级| 久久精品一区八戒影视| 日韩综合一区二区| av电影在线观看一区| 日韩精品一区二区三区蜜臀| 亚洲日本青草视频在线怡红院| 美女看a上一区| 在线日韩av片| 国产精品情趣视频| 国模冰冰炮一区二区| 欧美日韩一区中文字幕| 国产丝袜在线精品| 麻豆高清免费国产一区| 色综合激情五月| 国产精品嫩草影院av蜜臀| 另类的小说在线视频另类成人小视频在线 | 欧美一级日韩一级| 亚洲自拍偷拍欧美| 福利一区在线观看| 久久一日本道色综合| 日本中文在线一区| 欧美日韩一级大片网址| 亚洲乱码国产乱码精品精可以看| 国产精品18久久久久久久久| 日韩午夜精品视频| 免费xxxx性欧美18vr| 欧美卡1卡2卡| 午夜av一区二区| 在线看不卡av| 亚洲午夜在线视频| 一本到一区二区三区| 亚洲男同1069视频| 日本道色综合久久| 亚洲伊人色欲综合网| 91精品办公室少妇高潮对白| 亚洲人成精品久久久久久| 94-欧美-setu| 亚洲综合在线免费观看| 欧美日韩亚洲综合在线| 亚洲与欧洲av电影| 欧美日韩国产a| 同产精品九九九| 欧美成人综合网站| 国产精品小仙女| 中文字幕人成不卡一区| 91老司机福利 在线| 亚洲一区二区三区视频在线播放 | 99久久精品免费看国产| 国产精品久久精品日日| 97se亚洲国产综合自在线 | 91精品国产综合久久精品麻豆| 亚洲h在线观看| 欧美大片一区二区三区| 国产一区91精品张津瑜| 国产精品美女视频| 欧美在线影院一区二区| 日韩高清一区在线| 欧美国产欧美综合| 色94色欧美sute亚洲线路一久| 五月天激情小说综合| 久久久777精品电影网影网| av在线播放不卡| 亚洲国产aⅴ成人精品无吗| 日韩午夜精品视频| 成人听书哪个软件好| 午夜精品福利在线| 久久久久久久网| 欧亚一区二区三区| 国产一区二区伦理| 亚洲一区二区三区小说| 久久久蜜桃精品| 91国产免费看| 国产91清纯白嫩初高中在线观看 | 国产精品久久久久久久久晋中| 欧美性xxxxxxxx| 国产成人无遮挡在线视频| 亚洲午夜视频在线| 中文一区在线播放| 欧美tk—视频vk| 欧美性受xxxx黑人xyx性爽| 国产乱子伦视频一区二区三区 | 国产在线不卡视频| 亚洲国产成人av好男人在线观看| 国产欧美中文在线| 欧美日韩大陆一区二区| 99精品一区二区| 国产精品99久久久久久宅男| 亚洲高清免费一级二级三级| 国产精品美女久久久久久久久 | 成人午夜碰碰视频| 免费观看30秒视频久久| 亚洲一本大道在线| 中文字幕亚洲精品在线观看| 欧美不卡一二三| 日韩美女一区二区三区四区| 欧美日韩国产高清一区二区三区 | 国产免费观看久久| 欧美成人三级电影在线| 7777精品伊人久久久大香线蕉的| 99re亚洲国产精品| 不卡的av电影| 成人精品在线视频观看| 国产成人在线视频免费播放| 久久成人免费日本黄色| 蜜桃久久久久久久| 欧美aaaaa成人免费观看视频| 亚洲一级片在线观看| 亚洲午夜久久久久久久久电影网 | 激情小说亚洲一区| 蜜桃精品在线观看| 久久精品国产第一区二区三区| 日韩电影在线一区二区三区| 欧美aaaaaa午夜精品| 久热成人在线视频| 国产一区美女在线| 国产99久久久国产精品潘金 | 精品影院一区二区久久久| 蜜臀av在线播放一区二区三区| 日本伊人色综合网| 狠狠色伊人亚洲综合成人| 国产一区二区三区高清播放| 国产电影一区在线| 国产成人精品一区二区三区四区 | 欧洲精品一区二区| 欧美精品一二三| 欧美成人一区二区三区在线观看| 久久综合色天天久久综合图片| 欧美国产综合一区二区| 亚洲欧美另类久久久精品| 性久久久久久久久| 久久草av在线| av电影天堂一区二区在线 | 精品中文字幕一区二区| 国内一区二区在线| 99re66热这里只有精品3直播| 欧美偷拍一区二区| 日韩欧美你懂的| 中文字幕不卡在线播放| 亚洲一区二区视频在线观看| 久久成人综合网| 99精品偷自拍| 日韩欧美一二区| 1024亚洲合集| 蜜臀精品一区二区三区在线观看| 国产91精品久久久久久久网曝门| 91国偷自产一区二区三区成为亚洲经典 | 激情图片小说一区| 色婷婷久久久综合中文字幕| 91精品麻豆日日躁夜夜躁| 国产精品久久久久久久第一福利 | 欧美亚洲综合在线| 久久亚洲精品小早川怜子| 亚洲激情第一区| 国产一区久久久| 欧美日韩成人高清| 亚洲欧洲性图库| 久久国产精品99精品国产| 欧美亚男人的天堂| 国产精品天干天干在线综合| 免费在线观看视频一区| 日本高清成人免费播放| 国产精品天干天干在线综合| 麻豆精品一区二区av白丝在线| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 |