【java】登录验证码实现

验证码有很多种实现方法,看来很多什么的都有,对于菜鸟的我来说看完一脸懵B,就想写个简单的、好理解的出来、今天要说的是在webservlet中写的

前端页面省略。。

生成验证码的代码:


        //创建对象
        BufferedImage image = new BufferedImage(60, 20, BufferedImage.TYPE_3BYTE_BGR);
        //获取图案
        Graphics g = image.getGraphics();
        //颜色,这里是整个验证码图片背景的设置
        Color c=new Color(200, 150, 255);
        g.setColor(c);
        g.fillRect(0, 0, 68, 22);
        //随即用到的字符
        char[] ch="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".toCharArray();
        //创建随机数对象
        Random r=new Random();
        StringBuffer buffer=new StringBuffer();
        int len=ch.length,index;
        for(int i=0;i<4;i++){
            //随机数获取的范围在字符数组的长度范围内,回去一个index
            index=r.nextInt(len);
            //这里是随机产生的字符的位置和颜色,
            g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255)));
            g.drawString(ch[index]+"", (i*15)+3, 18);
            //将生成的验证码字符添加到buffer
            buffer.append(ch[index]);
        }
        System.out.println(buffer.toString());//这里是我本地的一个测试
        //将生成的验证码存到session中
//        req.getSession().setAttribute("verifyCode", buffer.toString());
        //返回到前端
//        ImageIO.write(image, "JPG", resp.getOutputStream());

下面是前端输入跟生成验证码的对比代码:

 /*
        * 这段代码是对前端输入的验证码和产生的验证码的一个比较
        * 是webselect写的
        * */
        * //获取到前端输入的验证码
        String code=req.getParameter("verifyCode"); 
        //这是存在session的验证码
        String verifyCode=(String) req.getSession().getAttribute("verifyCode");
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out=resp.getWriter();
         //比较
        if(code.equals(verifyCode)){
            out.println("验证码正确");
            System.out.println("验证码正确");
        }else{
            out.println("验证码错误");
        }
        out.flush();
        out.close();

生成大致都一样,自己根据实际当中的情况应用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值