在网络信息这么发达的时代,我们每天都会上网去打游戏、逛淘宝、文库等许多网页,在注册或登录的时候,我们经常都会需要去进行输入验证码,这个验证码是为了保证我们的账号信息安全,防止一些恶意程序爬虫用户的个人信息等,可见验证码的重要。那么今天小编带大家一起看看,怎么去用Java实现的图片验证码?(今天我们所分享的是一个生成图片验证码 Servlet 工具类)
演示效果:
下面我们就来看看生成图片验证码的代码过程实现:
1. 创建一个Servlet继承HttpServlet,设置验证图片的宽度, 高度, 验证码的个数、验证码字体的高度、验证码中的单个字符基线、验证码字符组成元素等基本参数设置
2. 进行验证码图形属性的初始化
3. 在service方法中,定义一个类型为 BufferedImage.TYPE_INT_BGR 类型的图像缓存,然后在 buffImg 中创建一个 Graphics2D 图像,为Graphics2D 对象的后续图形设置颜色,填充一个指定的矩形: x – 要填充矩形的 x 坐标; y – 要填充矩形的 y 坐标; width – 要填充矩形的宽度; height – 要填充矩形的高度,创建一个 Font 对象,设置图片验证码中的字体风格、大小、颜色等字体参数
4. 绘制指定矩形的边框, 绘制出的矩形将比构件宽一个也高一个像素大小,随机产生 15 条干扰线, 使图像中的认证码不易被其它程序探测到,然后创建 randomCode 对象, 用于保存随机产生的验证码, 以便用户登录后进行验证
5. 将验证码中的验证码进行 for循环 遍历,得到随机产生的验证码数字,把正在产生的随机字符放入到 StringBuffer 中,然后用随机产生的颜色将验证码绘制到图像中,再把存放有所有随机字符的 StringBuffer 对应的字符串放入到 HttpSession 中,禁止图像缓存( 注意:将生成好的验证码放入Session中,以便后面登录时进行比较 )
6. 最后一步就是将图像输出到输出流中
这样,一个生成图片验证码的Servlet工具类就写好了。当然干扰线的数量、矩形框的大小、字体、颜色等样式可以根据自己喜好进行相应的调整,这个图片验证码写好后,我们可以在Web中的工程中做用户登录等方面使用。那么下面我们就来看看如何去使用我们写好的验证码工具类?
1. 在页面加入一个img标签,其中src属性就指向你的图片验证码工具类Servlet映射的路径(最好使用绝对路径),
2. 然后就是进行验证码的审核了,审核比较的思路就是将页面上用户输入的验证码和验证码工具类生成的放入Session中的验证码进行比对,若一致,则验证码正确,否则,就是页面没输入验证码或是验证码输入错误!