婷婷综合国产,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
    一本色道久久加勒比精品 | 欧美视频日韩视频在线观看| 日韩电影免费在线看| 亚洲高清免费视频| 亚洲不卡av一区二区三区| 一区二区三区欧美久久| 亚洲国产成人高清精品| 亚洲一区二区在线免费观看视频| 亚洲男人天堂av| 亚洲高清一区二区三区| 视频在线观看91| 国产在线播放一区三区四| 国产精品18久久久久| 国产成人在线网站| 色综合久久天天| 欧美一区欧美二区| 久久久噜噜噜久久中文字幕色伊伊 | 国产日韩视频一区二区三区| 欧美经典一区二区| 亚洲免费视频成人| 美女视频黄久久| 国产成人亚洲综合a∨婷婷图片| 9色porny自拍视频一区二区| 欧美亚洲国产bt| 日韩精品一区二区三区蜜臀| 欧美变态凌虐bdsm| 久久久夜色精品亚洲| 亚洲国产毛片aaaaa无费看| 日本美女视频一区二区| 日本一区中文字幕| 国产99精品国产| 欧美日韩国产大片| 久久久精品国产99久久精品芒果| 中文字幕一区在线观看| 亚洲a一区二区| 国产99久久久精品| 91精品国产一区二区人妖| 亚洲国产精品成人综合色在线婷婷 | 亚洲第一在线综合网站| 国产伦精品一区二区三区免费 | 欧美日韩一区二区三区免费看| 精品国产乱码久久久久久免费 | 国产一区欧美一区| 欧日韩精品视频| 久久久精品天堂| 日韩成人免费电影| 色婷婷综合视频在线观看| 精品久久久久久久久久久久久久久| 亚洲欧美日韩国产一区二区三区| 国产一区在线观看视频| 欧美精品自拍偷拍动漫精品| 亚洲欧洲无码一区二区三区| 狠狠网亚洲精品| 日韩一区国产二区欧美三区| 一区二区三区视频在线观看| 不卡一区二区中文字幕| 精品国产乱子伦一区| 热久久国产精品| 欧美日韩精品一区二区三区| 亚洲老妇xxxxxx| av不卡在线观看| 中文字幕一区二区三区在线不卡 | 91国内精品野花午夜精品| 国产欧美日韩精品在线| 国产综合久久久久久久久久久久| 欧美精品在线观看播放| 亚洲国产日产av| 欧美日韩精品欧美日韩精品| 亚洲综合丁香婷婷六月香| 91美女在线观看| 尤物av一区二区| 91国在线观看| 性欧美疯狂xxxxbbbb| 欧美视频一区二区三区四区| 亚洲va在线va天堂| 欧美日韩性生活| 日韩成人一区二区三区在线观看| 日韩一级二级三级| 日本美女一区二区三区视频| 日韩精品在线一区| 国产麻豆精品在线观看| 中文字幕精品综合| 色综合久久久久久久| 亚洲制服丝袜在线| 欧美精品三级在线观看| 精品一区二区三区在线播放| 久久久国产一区二区三区四区小说 | 欧美性色综合网| 亚洲一本大道在线| 日韩一区二区在线观看| 国产精品66部| 亚洲综合男人的天堂| 91精品欧美综合在线观看最新| 青青青伊人色综合久久| 久久免费电影网| 色综合久久久久| 免费在线观看日韩欧美| 日本一区二区视频在线观看| 在线区一区二视频| 久久成人久久爱| 国产精品国产三级国产普通话99 | 欧美夫妻性生活| 国产在线播放一区| 亚洲激情五月婷婷| 精品国产麻豆免费人成网站| 99麻豆久久久国产精品免费| 日本最新不卡在线| 国产精品对白交换视频| 欧美一区二区三区精品| 成人午夜在线播放| 午夜精品福利视频网站| 中国色在线观看另类| 欧美午夜寂寞影院| 成人精品视频网站| 六月丁香婷婷久久| 亚洲综合在线第一页| 国产三级一区二区三区| 91麻豆精品91久久久久久清纯| 国产成人免费视频| 三级久久三级久久| 中文字幕一区二区三区乱码在线 | 亚洲男女毛片无遮挡| 亚洲精品一区二区三区蜜桃下载| 欧美在线一二三| av在线一区二区三区| 国产专区综合网| 日韩在线一二三区| 亚洲乱码日产精品bd| 欧美国产一区在线| 日韩视频免费直播| 欧美日韩国产综合视频在线观看| www.激情成人| 国产成人在线视频播放| 精品一区二区精品| 日韩 欧美一区二区三区| 一区二区三区中文字幕| 亚洲私人黄色宅男| 国产精品乱人伦一区二区| 久久九九国产精品| 欧美电影精品一区二区| 欧美一区二区三区四区久久| 欧美丝袜自拍制服另类| 欧美日韩免费电影| 精品视频一区二区不卡| 欧美天天综合网| 欧美日韩mp4| 欧美美女激情18p| 91精品国产综合久久精品麻豆| 欧美性xxxxx极品少妇| 欧美亚洲精品一区| 欧美日韩视频第一区| 欧美日韩免费一区二区三区| 欧美日韩亚洲综合一区| 欧美日韩成人在线一区| 91精品在线麻豆| 26uuu精品一区二区| 久久九九久久九九| 日韩美女视频一区二区| 亚洲综合999| 日韩福利视频导航| 国内精品久久久久影院一蜜桃| 麻豆视频一区二区| 国产成人在线色| 91国偷自产一区二区三区成为亚洲经典| 91福利社在线观看| 在线综合视频播放| 26uuu精品一区二区| 欧美国产一区视频在线观看| 玉米视频成人免费看| 婷婷开心久久网| 国产乱码字幕精品高清av| 97久久超碰精品国产| 欧美三级在线看| 精品欧美黑人一区二区三区| 国产精品久久久久久久久免费相片| 国产精品第13页| 日韩成人精品在线观看| 激情小说欧美图片| 色婷婷综合久久久中文一区二区| 欧美一区二区日韩| 国产精品第一页第二页第三页| 丝袜美腿高跟呻吟高潮一区| 国产传媒一区在线| 欧美精品三级在线观看| 日本一区二区视频在线观看| 日韩中文字幕91| 99久久婷婷国产综合精品| 亚洲大片在线观看| 日韩视频永久免费| 国产精品久久久久久久久久免费看| 亚洲免费在线视频一区 二区| 日本中文字幕一区二区视频| www.色精品| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 天涯成人国产亚洲精品一区av| 国产精品1区二区.| 日韩一卡二卡三卡国产欧美| 亚洲欧美日韩系列| 成人va在线观看| 26uuu精品一区二区|