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

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

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

    Java技術專區--Hilly

    http://blog.duyouyou.com
       :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理

    jsp生成隨機驗證碼圖片(轉)

    Posted on 2006-08-06 21:45 duyouyou.com 閱讀(2099) 評論(7)  編輯  收藏 所屬分類: web技術
    轉自:http://www.matrix.org.cn/resource/article/0/910.html


    生成有4個隨機數字和雜亂背景的圖片,數字和背景顏色會改變,服務器端刷新(用history.go(-1)也會變)
    原型參考ALIBABA??http://china.alibaba.com/member/showimage

    ------------產生驗證碼圖片的文件-----image.jsp-------------------------------------------


    <%@?page?contentType="image/jpeg"?import="java.awt.*,java.awt.image.*,java.util.*,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=20;
    BufferedImage?image?
    =?new?BufferedImage(width,?height,?BufferedImage.TYPE_INT_RGB);

    //?獲取圖形上下文
    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(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?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("rand",sRand);


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

    //?輸出圖象到頁面
    ImageIO.write(image,?"JPEG",?response.getOutputStream());


    %>?

    ---------------使用驗證碼圖片的文件---------a.jsp------------------------------------


    <%@?page?contentType="text/html;charset=gb2312"?%>
    <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
    <html>
    <head>
    <title>認證碼輸入頁面</title>
    <meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312">
    <META?HTTP-EQUIV="Pragma"?CONTENT="no-cache">?
    <META?HTTP-EQUIV="Cache-Control"?CONTENT="no-cache">?
    <META?HTTP-EQUIV="Expires"?CONTENT="0">?
    </head>
    <body>
    <form?method=post?action="check.jsp">
    <table>
    ??? <tr>
    ???????
    <td?align=left>系統產生的認證碼:</td>
    ???????
    <td><img?border=0?src="image.jsp"></td>
    ???
    </tr>
    ???
    <tr>
    ???????
    <td?align=left>輸入上面的認證碼:</td>
    ???????
    <td><input?type=text?name=rand?maxlength=4?value=""></td>
    ???
    </tr>
    ???
    <tr>
    ???????
    <td?colspan=2?align=center><input?type=submit?value="提交檢測"></td>
    ????
    </tr>
    </table>
    </form>
    </body>
    </html>


    -----------------驗證的頁面----------check.jsp

    <%@?page?contentType="text/html;?charset=gb2312"?language="java"?import="java.sql.*"?errorPage=""?%>
    <html>
    <head>
    <title>認證碼驗證頁面</title>
    <meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312">
    <META?HTTP-EQUIV="Pragma"?CONTENT="no-cache">?
    <META?HTTP-EQUIV="Cache-Control"?CONTENT="no-cache">?
    <META?HTTP-EQUIV="Expires"?CONTENT="0">?
    </head>

    <body>
    <%?
    String?rand?
    =?(String)session.getAttribute("rand");
    String?input?
    =?request.getParameter("rand");
    %>
    系統產生的認證碼為:?
    <%=?rand?%><br>
    您輸入的認證碼為:?
    <%=?input?%><br>
    <br>
    <%
    ??
    if?(rand.equals(input))?{
    %>
    <font?color=green>輸入相同,認證成功!</font>
    <%
    ??}?
    else?{
    %>
    <font?color=red>輸入不同,認證失敗!</font>
    <%
    ??}
    %>
    </body>
    </html>


    評論

    # re: jsp生成隨機驗證碼圖片(轉)  回復  更多評論   

    2006-08-07 12:44 by ming
    zan

    # re: jsp生成隨機驗證碼圖片(轉)  回復  更多評論   

    2006-08-12 12:32 by 游子
    收藏

    # re: jsp生成隨機驗證碼圖片(轉)  回復  更多評論   

    2006-11-08 11:12 by 00[匿名]
    好東西,同意

    # re: jsp生成隨機驗證碼圖片(轉)  回復  更多評論   

    2007-05-15 20:37 by dyjs
    hao

    # re: jsp生成隨機驗證碼圖片(轉)[未登錄]  回復  更多評論   

    2007-05-23 16:52 by 00
    good

    # re: jsp生成隨機驗證碼圖片(轉)  回復  更多評論   

    2007-06-27 10:25 by justin
    good job!

    # re: jsp生成隨機驗證碼圖片(轉)  回復  更多評論   

    2007-12-20 15:36 by 暗暗啊
    為什么我的圖片生成不了了??>???誰幫我下啊1
    Hold住
    主站蜘蛛池模板: 亚洲高清视频免费| 亚洲人成77777在线播放网站不卡| 中国一级毛片免费看视频| 亚洲av永久无码精品国产精品 | 一级毛片成人免费看a| 亚洲女同成av人片在线观看| 蜜桃成人无码区免费视频网站| 2020久久精品亚洲热综合一本| 国产gav成人免费播放视频| 久久毛片免费看一区二区三区| 夜夜亚洲天天久久| 国产精品va无码免费麻豆| 在线视频网址免费播放| 亚洲人成网站日本片| 亚洲成人国产精品| www视频免费看| jizz免费在线影视观看网站| 亚洲第一页在线视频| 精品无码国产污污污免费| 鲁丝片一区二区三区免费| 亚洲欧美第一成人网站7777| 亚洲国产精品无码久久久秋霞2 | 亚洲日韩久久综合中文字幕| 不卡一卡二卡三亚洲| 欧美在线看片A免费观看| 手机看片国产免费永久| 四虎亚洲精品高清在线观看| 亚洲人成在线播放网站| 青青青国产免费一夜七次郎| 免费看又黄又无码的网站 | 在线免费观看色片| 野花香高清视频在线观看免费 | 18禁成人网站免费观看| h片在线观看免费| 亚洲国产av玩弄放荡人妇| 亚洲精品免费视频| 中文字幕亚洲不卡在线亚瑟| 日本久久久免费高清| 国产1024精品视频专区免费| 最好免费观看高清在线| 成年网在线观看免费观看网址|