Java技術(shù)專區(qū)--Hilly

          http://blog.duyouyou.com
             :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理

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

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


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

          ------------產(chǎn)生驗證碼圖片的文件-----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);
          ????????}
          %>
          <%
          //設(shè)置頁面不緩存
          response.setHeader("Pragma","No-cache");
          response.setHeader(
          "Cache-Control","no-cache");
          response.setDateHeader(
          "Expires",?0);

          //?在內(nèi)存中創(chuàng)建圖象
          int?width=60,?height=20;
          BufferedImage?image?
          =?new?BufferedImage(width,?height,?BufferedImage.TYPE_INT_RGB);

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

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

          //?設(shè)定背景色
          g.setColor(getRandColor(200,250));
          g.fillRect(
          0,?0,?width,?height);

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

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


          //?隨機產(chǎn)生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);
          }

          //?取隨機產(chǎn)生的認證碼(4位數(shù)字)
          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)));//調(diào)用函數(shù)出來的顏色相同,可能是因為種子太接近,所以只能直接生成
          ????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>系統(tǒng)產(chǎn)生的認證碼:</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");
          %>
          系統(tǒng)產(chǎn)生的認證碼為:?
          <%=?rand?%><br>
          您輸入的認證碼為:?
          <%=?input?%><br>
          <br>
          <%
          ??
          if?(rand.equals(input))?{
          %>
          <font?color=green>輸入相同,認證成功!</font>
          <%
          ??}?
          else?{
          %>
          <font?color=red>輸入不同,認證失敗!</font>
          <%
          ??}
          %>
          </body>
          </html>


          評論

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

          2006-08-07 12:44 by ming
          zan

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

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

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

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

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

          2007-05-15 20:37 by dyjs
          hao

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

          2007-05-23 16:52 by 00
          good

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

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

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

          2007-12-20 15:36 by 暗暗啊
          為什么我的圖片生成不了了??>???誰幫我下啊1
          Hold住
          主站蜘蛛池模板: 兴化市| 石泉县| 永泰县| 米易县| 满城县| 海城市| 军事| 青州市| 丹寨县| 准格尔旗| 上犹县| 什邡市| 清流县| 常熟市| 闵行区| 宜黄县| 任丘市| 皮山县| 天祝| 溆浦县| 独山县| 香河县| 马尔康县| 泰兴市| 莒南县| 石城县| 莎车县| 惠安县| 荃湾区| 崇明县| 新田县| 南和县| 望谟县| 徐闻县| 平南县| 永福县| 巴林左旗| 库尔勒市| 安塞县| 武功县| 定陶县|