Java进阶开发课堂笔记之开发验证码功能

开发验证码功能

完成了以上的工作之后,我们就是可以开始开发登录界面中另一个重要的功能,就是验证码功能。
首先,我们新创建一个CaptchaController的类:
Java进阶开发课堂笔记之开发验证码功能_第1张图片
同样,也是继承HttpServlet,并且配置好WebServlet(配置WebServlet的方法,参考Java进阶开发课堂笔记(四)),此次我们重写的是service
在这里插入图片描述
因为验证码是一张图片,而不是一个文本,所以,我们先创建一个缓冲区BufferedImage来存放图片,使用Graphics这个是抽象类,用来传给paint()方法作为画笔的,此时我们需要用的得命令有:
Java进阶开发课堂笔记之开发验证码功能_第2张图片
命令包含了设置背景颜色,字体大小,格式,增加斜线和噪点的代码。
因为验证码非固定文本,所有我们要定义一个方法,随机获取字符:
Java进阶开发课堂笔记之开发验证码功能_第3张图片
建议将容易混淆的字母去除,当然不去除也是可以的。
定义一个方法后,我们可以在main文件夹下创建一个Test文件夹用来测试方法的是否可用:
Java进阶开发课堂笔记之开发验证码功能_第4张图片
测试完,方法是可以使用之后,在CaptchaController里面,我们就可以调用它:

 String code =randomString(4); //调用随机生成验证码的方法
        g.drawString(code,25,32);

(具体位置可查看先前图片中,标有提示)
最后,我们要在浏览器中显示验证码:
Java进阶开发课堂笔记之开发验证码功能_第5张图片
完成以上操作后,就基本完成了验证码的开发,我们现在运行起来看一下。
Java进阶开发课堂笔记之开发验证码功能_第6张图片

优化验证码

Java进阶开发课堂笔记之开发验证码功能_第7张图片
这个是上面已经完成的验证码,此时我想随机获取验证码的字体颜色、斜线的颜色和噪点的颜色,我们可以定义一个getRandomColor方法通过用16进制的颜色代码,进行随机取色:

private static Color getRandomColor(){
        Random random = new Random();
        Color color =new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256));
        return color;
    }

方法定义好之后,我们分别在字体、斜线和噪点的代码中使用g.setColor(getRandomColor);来调用这个方法,完成之后,我们运行一下,看下结果:
Java进阶开发课堂笔记之开发验证码功能_第8张图片

最后,不要忘了提交代码到本地仓,并push到远程仓库去。

你可能感兴趣的:(Java进阶开发课堂笔记之开发验证码功能)