<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java Blog for Alex Wan

    Let life be beautiful like summer flowers and death like autumn leaves.

    統計

    留言簿(10)

    BlogJava

    Blogs

    DIV+CSS

    JQuery相關

    友情鏈接

    常去的地方

    數據供應

    閱讀排行榜

    評論排行榜

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

    在tomcat5下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;i<155;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 i=0;i<4;i++){
    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*i+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();
    }%>


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



    Let life be beautiful like summer flowers and death like autumn leaves.

    posted on 2008-06-07 10:27 Alexwan 閱讀(353) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲日韩国产精品乱| 午夜私人影院免费体验区| 亚洲精品tv久久久久久久久久| avtt天堂网手机版亚洲| 亚洲免费中文字幕| 色www免费视频| 天天看免费高清影视| 亚洲AV色无码乱码在线观看| 日日操夜夜操免费视频| 天天综合亚洲色在线精品| 夜色阁亚洲一区二区三区| 亚洲男人天堂2017| 最近2019免费中文字幕视频三| 在线观看亚洲人成网站| 国产一卡2卡3卡4卡2021免费观看| 亚洲国产成人久久综合一区77 | 爱情岛论坛网亚洲品质自拍| 草久免费在线观看网站| 亚洲中文字幕久久精品无码APP| 成人电影在线免费观看| 2022年亚洲午夜一区二区福利 | 韩国免费a级作爱片无码| 亚洲va久久久噜噜噜久久| 免费91麻豆精品国产自产在线观看 | 亚洲AV成人一区二区三区观看| 男人的天堂亚洲一区二区三区 | 亚洲国产精品日韩| 青青操免费在线视频| 久久亚洲精品成人av无码网站| 国产高清不卡免费在线| 爱爱帝国亚洲一区二区三区| 亚洲色偷偷综合亚洲AV伊人| 人妻无码一区二区三区免费| 亚洲人成色777777老人头| 精品国产香蕉伊思人在线在线亚洲一区二区 | 全部免费a级毛片| 野花香高清在线观看视频播放免费| 亚洲福利一区二区| 亚洲成aⅴ人片久青草影院| 欧洲精品99毛片免费高清观看| 亚洲七久久之综合七久久|