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

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

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

    posts - 89, comments - 241, trackbacks - 0, articles - 1
       :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理

    一個不會報錯的jsp彩色驗(yàn)證碼程序

    Posted on 2009-09-22 14:52 saobaolu 閱讀(515) 評論(3)  編輯  收藏 所屬分類: javaweb
    一個不會報錯的jsp彩色驗(yàn)證碼程序
    一般的,會報servlet錯誤:
    getOutputStream() has already been called for this response
    但是這個程序不會報錯,原因是把里面的空格都刪除
    -------------------------------------------------------------
    在tomcat中jsp編譯成servlet之后在函數(shù)_jspService(HttpServletRequest request, HttpServletResponse response)的最后
    有一段這樣的代碼
    finally {
          if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
        }
    這里是在釋放在jsp中使用的對象,會調(diào)用response.getWriter(),因?yàn)檫@個方法是和
    response.getOutputStream()相沖突的!所以會出現(xiàn)以上這個異常。

    然后當(dāng)然是要提出解決的辦法,其實(shí)挺簡單的(并不是和某些朋友說的那樣--
    將jsp內(nèi)的所有空格和回車符號所有都刪除掉),

    在使用完輸出流以后調(diào)用以下兩行代碼即可:
    out.clear();
    out = pageContext.pushBody();

    --------------------------------------------------------
    分割線內(nèi)為引用~

     1<%@ page  import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
     2<%@ page import="java.io.OutputStream" %>
     3<%!
     4Color getRandColor(int fc,int bc){
     5Random random = new Random();
     6if(fc>255) fc=255;
     7if(bc>255) bc=255;
     8int r=fc+random.nextInt(bc-fc);
     9int g=fc+random.nextInt(bc-fc);
    10int b=fc+random.nextInt(bc-fc);
    11return new Color(r,g,b);
    12}

    13%>
    14<%
    15try{
    16response.setHeader("Pragma","No-cache");
    17response.setHeader("Cache-Control","no-cache");
    18response.setDateHeader("Expires"0);
    19int width=60, height=20;
    20BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    21OutputStream os=response.getOutputStream();
    22Graphics g = image.getGraphics();
    23Random random = new Random();
    24g.setColor(getRandColor(200,250));
    25g.fillRect(00, width, height);
    26
    27g.setFont(new Font("Times New Roman",Font.PLAIN,18));
    28g.setColor(getRandColor(160,200));
    29for (int i=0;i<155;i++)
    30{
    31int x = random.nextInt(width);
    32int y = random.nextInt(height);
    33int xl = random.nextInt(12);
    34int yl = random.nextInt(12);
    35g.drawLine(x,y,x+xl,y+yl);
    36}

    37String sRand="";
    38for (int i=0;i<4;i++){
    39String rand=String.valueOf(random.nextInt(10));
    40sRand+=rand;
    41g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
    42g.drawString(rand,13*i+6,16);
    43}

    44session.setAttribute("rand",sRand);
    45g.dispose();
    46
    47ImageIO.write(image, "JPEG",os);
    48os.flush();
    49os.close();
    50os=null;
    51response.flushBuffer();
    52out.clear();
    53out = pageContext.pushBody();
    54}

    55catch(IllegalStateException e)
    56{
    57System.out.println(e.getMessage());
    58e.printStackTrace();
    59}
    %>
    60


    沒有所謂的命運(yùn),只有不同的選擇!
    主站蜘蛛池模板: 国产一精品一AV一免费孕妇| 久久免费看黄a级毛片| 免费一级成人毛片| 亚洲Av无码国产一区二区| 在线A级毛片无码免费真人| 亚洲毛片基地4455ww| 国产福利在线免费| 亚洲欧美一区二区三区日产| 女人被弄到高潮的免费视频| 亚洲中文无码亚洲人成影院| 国拍在线精品视频免费观看| 亚洲免费福利在线视频| 女人毛片a级大学毛片免费| 美女被艹免费视频| 亚洲日韩国产精品乱| 久爱免费观看在线网站| 亚洲成人福利网站| 日韩一区二区在线免费观看| 日本高清免费中文在线看| 亚洲精品无码mv在线观看网站| 免费无码一区二区三区| 亚洲午夜久久久久久尤物| 永久免费av无码网站大全| 欧洲乱码伦视频免费国产| 精品亚洲综合在线第一区| 99国产精品视频免费观看| 亚洲一级毛片免观看| 免费一级e一片在线播放| 99久久免费国产精品热| 亚洲国产韩国一区二区| 尤物永久免费AV无码网站| 国产中文字幕在线免费观看| 亚洲一级片在线观看| 亚洲精品国产日韩无码AV永久免费网| 国产精品99精品久久免费| 中文字幕无码精品亚洲资源网久久| 免费成人黄色大片| 国产免费不卡视频| 国产日韩精品无码区免费专区国产| 亚洲视频一区二区在线观看| 日本不卡免费新一二三区|