验证码的简单实现

# 在登陆获或者注册的界面经常需要进行验证码的输入 这里进行简单的实现

一个简单的html界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>验证码</title>
    <script>

        /**
         * 在这里面动态的点击图片或者链接就会刷新验证码
         */
        window.onload = function (ev) {

          var img = document.getElementById("verification_img");
          var sx  = document.getElementById("sx");
          img.onclick = function (ev1) {
          
                var time = new  Date().getTime();
              img.src = "/_war_exploded2/verificationServlet?"+time;
          }
            
          sx.onclick = function (ev) {
                var time = new  Date().getTime();
                img.src = "/_war_exploded2/verificationServlet?"+time;            }
        }
        

    </script>
</head>
<body>
<img  id="verification_img" src="/_war_exploded2/verificationServlet">
<a id="change" href="">看不清换一张?</a>
</body>
</html>

相当于验证码的那个区域(image)显示 通过点击图片或者链接可以进行刷新验证码

servlet的代码

package com.yanzhenma;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;


@javax.servlet.annotation.WebServlet("/verificationServlet")
public class verificationServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        /*登陆注册 验证码的实例
        * */
        //1 画出一个验证码的框框(创建一个对象)
        int width = 100;
        int height = 50;
        BufferedImage image = new BufferedImage (width,height ,BufferedImage.TYPE_INT_RGB);

        //2 
            //2.1 填充颜色
        Graphics graphics = image.getGraphics ( ); // 画笔对象
        graphics.setColor (Color.PINK);
        graphics.fillRect (0,0,width,height);

        //2.2画边框
        graphics.setColor(Color.BLUE);
        graphics.drawRect(0,0,width - 1,height - 1);

        String str  = "qwertyuioplkjhgfdaszxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM1230456789";

        Random random = new Random ();

        for (int i = 1 ; i <=4;i++){
            int index = random.nextInt (str.length ( ));  //随机获取str里面的一个位置
            char ch = str.charAt (index); //获取该位置的字符
            graphics.drawString(ch+"",width/5*i,height/2);
        }



        //3  完成验证码 发送给页面
        ImageIO.write (image,"jpg",response.getOutputStream ());
    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
            this.doPost (request,response);
    }
}

验证码由大小写字母和阿拉伯数字随机组成
把在验证码写在image上面在 发送给html界面

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值