<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)

    隨筆分類

    隨筆檔案

    搜索

    •  

    積分與排名

    • 積分 - 174150
    • 排名 - 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
    主站蜘蛛池模板: 亚洲精品国产福利一二区| 国产成人免费AV在线播放| 免费视频爱爱太爽了| 亚洲AV日韩AV天堂一区二区三区 | 亚洲av专区无码观看精品天堂| 中文字幕高清免费不卡视频| 久久影视综合亚洲| 99久久免费国产特黄| 亚洲AV永久无码精品一百度影院 | 亚洲风情亚Aⅴ在线发布| 最近最好的中文字幕2019免费| 亚洲1234区乱码| 性做久久久久免费观看| 色天使亚洲综合一区二区| 免费观看四虎精品国产永久| 一级特黄a大片免费| 亚洲AV无码久久精品蜜桃| 亚洲美女视频免费| 亚洲综合一区国产精品| 亚洲av无码不卡私人影院| 久久99精品免费一区二区| 麻花传媒剧在线mv免费观看| 亚洲精品伊人久久久久| 四虎永久成人免费| 中文在线免费不卡视频| 亚洲日韩乱码久久久久久| 在线免费观看污网站| WWW免费视频在线观看播放| 亚洲小视频在线观看| 成人人免费夜夜视频观看| 搜日本一区二区三区免费高清视频 | 免费高清av一区二区三区| 日日摸夜夜添夜夜免费视频| 亚洲大尺度无码专区尤物| 青青青国产在线观看免费| 亚洲av永久无码精品漫画| 日本免费人成在线网站| 男女男精品网站免费观看| 亚洲一区影音先锋色资源| 国产一级做a爱免费视频| 午夜免费福利小电影|