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

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

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

    隨筆-208  評論-469  文章-30  trackbacks-0
    在開發中驗證碼是比較常用到有效防止這種問題對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試的方式。
    此演示程序包括三個文件:
    1.index.jsp:登錄頁面
    2.image.jsp:生成驗證碼圖片頁面
    3.result.jsp:結果頁面
    【頁面顯示】
    哦哦D74ED2}0.jpg

    【頁面代碼】
    1.index.jsp
    html代碼
    1. <html><body>??????
    2. <formmethod=postaction="result.jsp">??????
    3. <inputtype=textname=inputmaxlength=4>??????
    4. <imgborder=0src="image.jsp">??????
    5. <inputtype="submit"value="submit">??????
    6. </form></body></html>??
    [注意]:
    (1)使用maxlength屬性來限制輸入字符;
    (2)使用<img>標簽來顯示生成的驗證碼圖片.
    2.image.jsp
      1. <%@ page contentType="image/JPEG"??????
      2. ????import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"??????
      3. ????? pageEncoding="GBK"%><%!Color getRandColor(int fc, int bc) {//給定范圍獲得隨機顏色???????
      4. ????????? Random random = new Random();???????
      5. ????????if (fc > 255)???????
      6. ????????????? fc = 255;???????
      7. ????????if (bc > 255)???????
      8. ????????????? bc = 255;???????
      9. ????????int r = fc + random.nextInt(bc - fc);???????
      10. ????????int g = fc + random.nextInt(bc - fc);???????
      11. ????????int b = fc + random.nextInt(bc - fc);???????
      12. ????????returnnew Color(r, g, b);???????
      13. ????? }%><%???????
      14. ????//設置頁面不緩存???????
      15. ????? response.setHeader("Pragma", "No-cache");???????
      16. ????? response.setHeader("Cache-Control", "no-cache");???????
      17. ????? response.setDateHeader("Expires", 0);???????
      18. ??????
      19. ????// 在內存中創建圖象???????
      20. ????int width = 60, height = 20;???????
      21. ????? BufferedImage image = new BufferedImage(width, height,???????
      22. ????????????? BufferedImage.TYPE_INT_RGB);???????
      23. ??????
      24. ????// 獲取圖形上下文???????
      25. ????? Graphics g = image.getGraphics();???????
      26. ??????
      27. ????//生成隨機類???????
      28. ????? Random random = new Random();???????
      29. ??????
      30. ????// 設定背景色???????
      31. ????? g.setColor(getRandColor(200, 250));???????
      32. ????? g.fillRect(0, 0, width, height);???????
      33. ??????
      34. ????//設定字體???????
      35. ????? g.setFont(new Font("Times New Roman", Font.PLAIN, 18));???????
      36. ??????
      37. ????//畫邊框???????
      38. ????//g.setColor(new Color());???????
      39. ????//g.drawRect(0,0,width-1,height-1);???????
      40. ??????
      41. ????// 隨機產生155條干擾線,使圖象中的認證碼不易被其它程序探測到???????
      42. ????? g.setColor(getRandColor(160, 200));???????
      43. ????for (int i = 0; i < 100; i++) {???????
      44. ????????int x = random.nextInt(width);???????
      45. ????????int y = random.nextInt(height);???????
      46. ????????int xl = random.nextInt(12);???????
      47. ????????int yl = random.nextInt(12);???????
      48. ????????? g.drawLine(x, y, x + xl, y + yl);???????
      49. ????? }???????
      50. ??????
      51. ????// 取隨機產生的認證碼(4位數字)???????
      52. ????? String sRand = "";???????
      53. ????for (int i = 0; i < 4; i++) {???????
      54. ????????? String rand = String.valueOf(random.nextInt(10));???????
      55. ????????? sRand += rand;???????
      56. ????????// 將認證碼顯示到圖象中???????
      57. ????????? g.setColor(new Color(20 + random.nextInt(110), 20 + random???????
      58. ????????? .nextInt(110), 20 + random.nextInt(110)));//調用函數出來的顏色相同,可能是因為種子太接近,所以只能直接生成???????
      59. ????????? g.drawString(rand, 13 * i + 6, 16);???????
      60. ????? }???????
      61. ??????
      62. ????// 將認證碼存入SESSION???????
      63. ????? session.setAttribute("code", sRand);???????
      64. ??????
      65. ????// 圖象生效???????
      66. ????? g.dispose();???????
      67. ??????
      68. ????// 輸出圖象到頁面???????
      69. ????? ImageIO.write(image, "JPEG", response.getOutputStream());???????
      70. %>??
      ??
    [注意]:
    (1)contentType值設置為"image/JPEG"
    3.result.jsp
    1. <%@ page language="java"import="java.util.*"pageEncoding="GBK"%>??
    2. <html><body>??
    3. <%???
    4. ????? String input=request.getParameter("input");???
    5. ????? String code=(String)session.getAttribute("code");???????
    6. ????? if(input.equals(code)){???
    7. ????????? out.println("驗證成功!");???
    8. ????? }else{???
    9. ????????? out.println("驗證失敗!");???
    10. ????? }???
    11. %>??
    12. </body></html>??
    posted on 2007-04-18 23:38 EricWong 閱讀(359) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 久久久久久久亚洲精品| 两性刺激生活片免费视频| 国产亚洲漂亮白嫩美女在线| 亚洲一区精彩视频| 亚洲一区二区三区在线观看网站| 亚洲AV永久无码精品一福利| 免费人成网站永久| 麻豆精品成人免费国产片| 最近免费字幕中文大全视频 | 中国亚洲女人69内射少妇| 久久久久亚洲精品无码系列| 亚洲国产成人久久| 五月天婷婷免费视频| 青青青国产在线观看免费网站| 亚洲女人初试黑人巨高清| yellow视频免费看| 无码视频免费一区二三区| 国产亚洲日韩一区二区三区| 国产亚洲精品免费视频播放| 最近高清国语中文在线观看免费 | 亚洲综合久久综合激情久久| 亚洲中文字幕久久精品无码A| 成人毛片18岁女人毛片免费看| 欧美亚洲国产SUV| 久久亚洲国产成人影院网站| 久久大香香蕉国产免费网站| 免费人成视频在线观看不卡| 亚洲成a人片77777老司机| 亚洲视频免费播放| 日韩亚洲人成在线综合日本| 精品久久亚洲一级α| 成人免费视频一区二区三区| 青娱乐在线视频免费观看| 妞干网在线免费观看| 亚洲1234区乱码| 我们的2018在线观看免费高清| 亚洲高清毛片一区二区| 性一交一乱一视频免费看| 污污污视频在线免费观看| 综合自拍亚洲综合图不卡区| 日本视频在线观看永久免费|