如何在网页上生成验证码?

简介: 在平时的网站的注册和登录的时候我们经常会遇到要填写验证码的情况,验证码的存在是保护网站系统的一个良好的方式,今天我就来谈一谈我生成验证码的一些心得。整体的使用思路:首先在Servlet的doGet方法中设置响应头的内容response.setHeader("Content-type", "image/jpeg");这是针对于图片信息的特有的方式。

在平时的网站的注册和登录的时候我们经常会遇到要填写验证码的情况,验证码的存在是保护网站系统的一个良好的方式,今天我就来谈一谈我生成验证码的一些心得。


整体的使用思路:

  • 首先在Servlet的doGet方法中设置响应头的内容response.setHeader("Content-type", "image/jpeg");这是针对于图片信息的特有的方式。
  • 创建一个缓冲的图片流
  • 配置一些必要的参数,如字体,画笔等
  • 调用ImageIO的write方法,并发送给客户端生成的图片信息

下面就来深入的研究一下这些方法。

创建一个缓冲的图片流


先看一看API帮助文档吧
这里写图片描述
这样指定一下相关的参数和图片类型。

配置一些必要的参数,如字体,画笔等


这里写图片描述
首先我们可以直接看到的是这个方法会返回一个Graphics对象,直接的操作就可以完成相应的内容,但是要想做一些更加精细化的操作,我们就可以借助于Graphics2D(帮助文档上的注解明显可以看得出这个方法就是在返回一个Graphics2D对象,这正好是我们所需要的)
这里写图片描述

调用ImageIO的write方法,并发送给客户端生成的图片信息


这里写图片描述
我们只需要传进去这个方法所需要的参数就好了!

至此,原理部分完成。下面请看一个具体的小例子吧。


案例展示


  • 原始输出:
private void showImage1(HttpServletResponse response) throws IOException {
        response.setHeader("Content-type", "image/jpeg");

        BufferedImage image = new BufferedImage(1000,500,BufferedImage.TYPE_INT_RGB);
        Graphics graphics = image.getGraphics();
        graphics.setColor(Color.GREEN);
        graphics.setFont(new Font(null,Font.ITALIC,200));
        graphics.drawString("123456789", 0, 200);
        ImageIO.write(image, "jpg", response.getOutputStream());
    }

结果如下:
这里写图片描述

  • 改变背景的输出:
    代码如下:
private void showImage2(HttpServletResponse response) throws IOException {
        response.setHeader("Content-type", "image/jpeg");

        BufferedImage image = new BufferedImage(1000,500,BufferedImage.TYPE_INT_RGB);

        Graphics2D graphics2D = (Graphics2D) image.getGraphics();

        graphics2D.fillRect(0, 0, 1000, 500);
        graphics2D.setFont(new Font(null,Font.BOLD,200));
        graphics2D.setColor(Color.GREEN);
        graphics2D.drawString("123456789", 0, 200);
        ImageIO.write(image, "jpg", response.getOutputStream());
    }

结果展示:
这里写图片描述


总结:

  • 掌握大致的流程,了解相关API的使用方法就可以完成这样的操作
  • 改进方向,将生成的验证码存储到session中,然后利用键值对的方式保存,在登陆的时候进行验证就是我们开发中会使用到的情景。
  • 好了,今天的内容就到这里吧!
目录
相关文章
|
安全 PHP 开发工具
注册登录首选,趣味滑块验证码
注册登录账户时,保障账户安全是首要任务!使用趣味滑块验证码,既能有效防御恶意攻击,又能为验证过程增添一丝乐趣。让注册和登录变得更加有趣又安全!
|
JavaScript 开发工具
同一页面生成多个验证码
一个页面需要两个验证码,使用同一个验证码调用两次会导致有前一个失效。那么我们需要创建不同的两个验证码,分别做验证。
同一页面生成多个验证码
|
Java Spring
网站验证码的设计与实现
网站验证码的设计与实现
|
JavaScript 前端开发
简单的验证码功能
简单的验证码功能
简单的验证码功能
|
Java BI Maven
学会这个工具的使用,让你快速生成验证码
前言 验证码是我们做人机验证最常用的方式,常用于敏感操作的验证,比如:登录、注册、修改等。 验证码的原理:不同的客户端拥有不同的 session 对象,在看到验证码图片的时刻,服务器后端代码生成图片并将随机字符存储到 session 中。
1210 0