• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java后端产生验证码后台验证功能的实现代码

java 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

直接跳severlet在java后台生成验证码:

@RequestMapping(value="yzm.action")
 public void Yzm(HttpSession session,HttpServletResponse resp){
 // 验证码图片的宽度。   
   int width = 60;   
    // 验证码图片的高度。   
   int height = 20;   
   
   // 验证码字符个数   
   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();   
    // 创建一个随机数生成器类   
    Random random = new Random();   
    // 将图像填充为白色   
    g.setColor(Color.WHITE);   
    g.fillRect(0, 0, width, height);   
    // 创建字体,字体的大小应该根据图片的高度来定。   
    Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);   
    // 设置字体。   
    g.setFont(font);   
    // 画边框。   
//    g.setColor(Color.BLACK);   
//    g.drawRect(0, 0, width - 1, height - 1);   
    // 随机产生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用于保存随机产生的验证码,以便用户登录后进行验证。   
    StringBuffer randomCode = new StringBuffer();
 
    int red = 0, green = 0, blue = 0;   
    // 随机产生codeCount数字的验证码。   
    for (int i = 0; i < codeCount; i++) {   
      // 得到随机产生的验证码数字。   
      String strRand = String.valueOf(codeSequence[random.nextInt(36)]);   
      // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。   
      red = random.nextInt(255);   
      green = random.nextInt(255);   
      blue = random.nextInt(255);   
      // 用随机产生的颜色将验证码绘制到图像中。   
      g.setColor(new Color(red, green, blue));   
      g.drawString(strRand, (i + 1) * x, codeY);   
      // 将产生的四个随机数组合在一起。   
      randomCode.append(strRand);   
    }   
    // 将四位数字的验证码保存到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显示页面的代码,点击图片刷新

<td><img id="img" src="yzm.action"/>${validateCode}</td>
      <td><input type="text" name="yzma"/><br/></td>
 $("#img").click(function(){
 $(this).attr("src","yzm.action?"+new Date().getTime<i>本文来源gaodai$ma#com搞$代*码网2</i>());
  });

将文本框中的值传入后台,与最开始生成验证码的随机数进行比较即可完成验证。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java后端产生验证码后台验证功能的实现代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址