>
Java 写一个随机验证码
2021-06-01 20:00
JAVA
  • 4507
  • 527
  • 64
  • 51

首先我们来整理下验证码需要怎么做:

  1. 验证码分为三个步骤 

    (1)生成一组随机数

    (2)生成一张图片

    (3)像浏览器发送验证码图片

那接下来 我们一步步来实现:

第一步 :生成一组随机数

代码如下:

//随机产生随机数的验证码
String chars="0123456789abcdefghijklmnopqrstuvwxyz";
char[] rands=new char[5];//用来存放验证码的数组
for(int i=0;i<5;i++){
    Random random = new Random();
    int num=random.nextInt(chars.length());
    rands[i]=chars.charAt(num);//用数组方式取出chars里面的字符
}
System.out.println(rands);//打印生成的验证码

第二步:生成一张图片

代码如下:

//把验证码制作成图片形式:
//创建图像缓冲区:
BufferedImage image = new BufferedImage(100,50,BufferedImage.TYPE_INT_RGB); 
//绘制图:
Graphics grap =image.getGraphics(); 
//设置背景颜色
grap.setColor(Color.blue);
Font font = new Font("黑体",Font.ITALIC,30);
//设置字体
grap.setFont(font);
//使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。
grap.drawString(rands[0]+"", 0,30);//绘制字符所在的位置
grap.drawString(rands[1]+"", 20,30);//绘制字符所在的位置
grap.drawString(rands[2]+"", 40,30);//绘制字符所在的位置
grap.drawString(rands[3]+"", 60,30);//绘制字符所在的位置
grap.drawString(rands[4]+"",80,30);//绘制字符所在的位置

第三步:发送验证码图片

代码如下:

//把图片用二进制发送给浏览器
//先把这个图片转换成Byte数组
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
ImageIO.write(image, "png", byteArrayOutputStream);
byte[] bytes=byteArrayOutputStream.toByteArray();
//通过二进制流传输图片
ServletOutputStream OutputStream=response.getOutputStream();
response.setContentType("image/jpeg");//设置发送的类型
response.setContentLength(bytes.length);//设置发送的数组长度
OutputStream.write(bytes);//写入流
OutputStream.close();//关闭流

这样一个验证码的功能就差不多就结束啦!

总结

感谢各位博友的阅读 ,欢迎您们提出意见 让我们一起交流。感谢你们对CYBLOG的支持理解,本次讲解到此结束!

全部留言 ()
返回
顶部