真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java后端產(chǎn)生驗證碼后臺驗證功能的實現(xiàn)代碼

直接跳severlet在java后臺生成驗證碼:

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:申請域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設、邵武網(wǎng)站維護、網(wǎng)站推廣。

@RequestMapping(value="yzm.action")
 public void Yzm(HttpSession session,HttpServletResponse resp){
 // 驗證碼圖片的寬度。   
   int width = 60;   
    // 驗證碼圖片的高度。   
   int height = 20;   
   
   // 驗證碼字符個數(shù)   
   int codeCount = 4;   
   
   int x = 0;   
   
   // 字體高度   
   int fontHeight;   
   
   int codeY;   
   
   char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',   
       'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',   
       'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };   
   x = width / (codeCount + 1);   
    fontHeight = height - 2;   
    codeY = height - 4; 
    BufferedImage buffImg = new BufferedImage(width, height,   
        BufferedImage.TYPE_INT_RGB);   
    Graphics2D g = buffImg.createGraphics();   
    // 創(chuàng)建一個隨機數(shù)生成器類   
    Random random = new Random();   
    // 將圖像填充為白色   
    g.setColor(Color.WHITE);   
    g.fillRect(0, 0, width, height);   
    // 創(chuàng)建字體,字體的大小應該根據(jù)圖片的高度來定。   
    Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);   
    // 設置字體。   
    g.setFont(font);   
    // 畫邊框。   
//    g.setColor(Color.BLACK);   
//    g.drawRect(0, 0, width - 1, height - 1);   
    // 隨機產(chǎn)生160條干擾線,使圖象中的認證碼不易被其它程序探測到。   
    g.setColor(Color.BLACK);   
    for (int i = 0; i < 1; i++) {   
      int x2 = random.nextInt(width);   
      int y2 = random.nextInt(height);   
      int xl = random.nextInt(12);   
      int yl = random.nextInt(12);   
      g.drawLine(x2, y2, x + xl, y2 + yl);   
    }   
    // randomCode用于保存隨機產(chǎn)生的驗證碼,以便用戶登錄后進行驗證。   
    StringBuffer randomCode = new StringBuffer();
 
    int red = 0, green = 0, blue = 0;   
    // 隨機產(chǎn)生codeCount數(shù)字的驗證碼。   
    for (int i = 0; i < codeCount; i++) {   
      // 得到隨機產(chǎn)生的驗證碼數(shù)字。   
      String strRand = String.valueOf(codeSequence[random.nextInt(36)]);   
      // 產(chǎn)生隨機的顏色分量來構造顏色值,這樣輸出的每位數(shù)字的顏色值都將不同。   
      red = random.nextInt(255);   
      green = random.nextInt(255);   
      blue = random.nextInt(255);   
      // 用隨機產(chǎn)生的顏色將驗證碼繪制到圖像中。   
      g.setColor(new Color(red, green, blue));   
      g.drawString(strRand, (i + 1) * x, codeY);   
      // 將產(chǎn)生的四個隨機數(shù)組合在一起。   
      randomCode.append(strRand);   
    }   
    // 將四位數(shù)字的驗證碼保存到Session中。   
    session.setAttribute("validateCode", randomCode.toString());   
    ServletOutputStream sos;
 try {
  sos = resp.getOutputStream();
  ImageIO.write(buffImg, "jpeg", sos);   
  sos.close();   
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }   
 }

jsp顯示頁面的代碼,點擊圖片刷新

${validateCode}
      
$("#img").click(function(){ $(this).attr("src","yzm.action?"+new Date().getTime()); });

將文本框中的值傳入后臺,與最開始生成驗證碼的隨機數(shù)進行比較即可完成驗證。

Java后端產(chǎn)生驗證碼后臺驗證功能的實現(xiàn)代碼

頁面上拿到的session的值老是比驗證碼晚一步,所以采取后臺進行驗證。這里我也不知道什么原因,望小伙伴們告知。。。

另一種思路,后臺生成隨機數(shù),前端生成畫布,用ajax拿隨機數(shù)

//后臺只生成隨機數(shù)
 @RequestMapping(value="random.action")
 public void findRandom (HttpServletResponse response) throws IOException{
  // 驗證碼字符個數(shù)   
   int codeCount = 4;
   char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',   
       'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',   
       'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
   
   // 創(chuàng)建一個隨機數(shù)生成器類   
     Random random = new Random();
   // randomCode用于保存隨機產(chǎn)生的驗證碼,以便用戶登錄后進行驗證。   
     StringBuffer randomCode = new StringBuffer();
     for (int i = 0; i < codeCount; i++) {   
       // 得到隨機產(chǎn)生的驗證碼數(shù)字。   
       String strRand = String.valueOf(codeSequence[random.nextInt(36)]); 
       // 將產(chǎn)生的四個隨機數(shù)組合在一起。   
       randomCode.append(strRand);   
     }
     PrintWriter out = response.getWriter();
     out.print(randomCode);
 }

 jsp,jq,js代碼


    
    換一張