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

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

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

    隨筆 - 59  文章 - 70  trackbacks - 0
    <2008年10月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    •  

    積分與排名

    • 積分 - 174149
    • 排名 - 340

    最新評論

    閱讀排行榜

    評論排行榜

    小謝叫我看一下01服務器上的醫藥平臺,說拋了很多異常出來,看一下,大部分都是因為登錄的時候驗證碼那個JSP頁面拋出的getOutputStream() has already been called for this response。解決的辦法,加上以下兩行代碼即可:
    out.clear();
    out = pageContext.pushBody();
    原文件是這樣寫的:
    <%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,java.io.*,javax.imageio.*" %>
    <%!
    //給定范圍獲得隨機顏色
    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);
    }
    %>
    <%
    //設置頁面不緩存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);

    // 在內存中創建圖象
    int width=60, height=16;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

    // 獲取圖形上下文
    Graphics g = image.getGraphics();

    //生成隨機類
    Random random = new Random();

    // 設定背景色
    g.setColor(getRandColor(150,160));
    g.fillRect(0, 0, width, height);

    //設定字體
    g.setFont(new Font("Times New Roman",Font.PLAIN,18));

    //畫邊框
    //g.setColor(new Color());
    //g.drawRect(0,0,width-1,height-1);


    // 隨機產生155條干擾線,使圖象中的認證碼不易被其它程序探測到
    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);
    }

    // 取隨機產生的認證碼(4位數字)
    //String rand = request.getParameter("rand");
    //rand = rand.substring(0,rand.indexOf("."));
    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
    session.setAttribute("CerCode",sRand);


    // 圖象生效
    g.dispose();

    // 輸出圖象到頁面
    OutputStream os=response.getOutputStream();
    ImageIO.write(image, "JPEG", os);
    %>
    我改過的文件:
    <%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,java.io.*,javax.imageio.*" %>
    <%!
    //給定范圍獲得隨機顏色
    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=16;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

    // 獲取圖形上下文
    Graphics g = image.getGraphics();

    //生成隨機類
    Random random = new Random();

    // 設定背景色
    g.setColor(getRandColor(150,160));
    g.fillRect(0, 0, width, height);

    //設定字體
    g.setFont(new Font("Times New Roman",Font.PLAIN,18));

    //畫邊框
    //g.setColor(new Color());
    //g.drawRect(0,0,width-1,height-1);


    // 隨機產生155條干擾線,使圖象中的認證碼不易被其它程序探測到
    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);
    }

    // 取隨機產生的認證碼(4位數字)
    //String rand = request.getParameter("rand");
    //rand = rand.substring(0,rand.indexOf("."));
    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
    session.setAttribute("CerCode",sRand);


    // 圖象生效
    g.dispose();

    // 輸出圖象到頁面
    OutputStream os=response.getOutputStream();
    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();
    }finally{

    }

    %>
    問題解決(紅色為加的代碼)

    posted on 2008-10-16 11:25 JasonChou 閱讀(5672) 評論(0)  編輯  收藏 所屬分類: j2ee
    主站蜘蛛池模板: 亚洲国产一区在线观看| 98精品全国免费观看视频| 日韩在线观看免费| 最新黄色免费网站| 久久精品国产亚洲网站| 国产日本亚洲一区二区三区| 中文字幕免费在线观看动作大片| 好男人视频社区精品免费| 久久久久亚洲精品无码蜜桃| 中文成人久久久久影院免费观看| 亚洲国产综合精品一区在线播放| 亚洲性色高清完整版在线观看| 最近高清中文字幕无吗免费看| 亚洲国产美女视频| 亚洲成a人片在线观看中文!!! | 亚洲精品tv久久久久| 日韩高清免费观看| 日本亚洲精品色婷婷在线影院| 亚洲国产精品人久久电影| 亚洲精品国产手机| 四虎影院在线免费播放| 国产片免费在线观看| 国产AV无码专区亚洲AV琪琪| 毛片a级毛片免费播放下载| 亚洲AV无码一区二区三区性色 | a级毛片毛片免费观看久潮| 免费夜色污私人影院网站| 久久精品亚洲中文字幕无码网站| 成年女人毛片免费播放人| 夜色阁亚洲一区二区三区| 免费无码又爽又刺激网站 | 99久久99久久精品免费观看 | 亚洲欧洲高清有无| 亚洲精品无AMM毛片| 亚洲综合一区二区国产精品| 亚洲国产精品网站久久| 污视频网站免费观看| 日韩免费人妻AV无码专区蜜桃| 狼群影院在线观看免费观看直播| jjzz亚洲亚洲女人| 亚洲成色999久久网站|