验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的 图灵测试 )的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。
验证码的生成目前常用的有两种方式:
1、原生的 Java 通过二维图像,画出一个包含验证码的图片。
2、使用Jcaptcha生产验证码图片。
本次讲解使用Jcaptcha生产验证码图片。
由于是第三方的框架,因此在开发前需要导入开发所需要的jar包。
(1)简单应用
1、创建 servlet 命名为ValidateServlet,请求url为ValidateServlet。
2、创建SampleImageCaptcha service 类。
3、验证方法,创建servlet命名为CaptchaValidationServlet,请求url为CaptchaValidationServlet
4、index. jsp 页面
5、效果展示
(2)扩展,自定义验证码样式。
上面讲解了应用Jcaptcha生产验证码图片,但是由于在实际应用中,不够灵活、不美观、不智能、不能自定义等原因,常常需要我们实现 ImageCaptchaService 接口来创建我们自己所需要的 service 对象,使用自己开发的图形验证码生成引擎(SampleListImageCaptchaEngine)来生成更为复杂的图形验证码。
1、修改SampleImageCaptchaService方法。
2、创建SampleListImageCaptchaEngine类,用于配置验证码的各项参数。
3、效果展示
4、自定义背景图片,同时修改SampleListImageCaptchaEngine类。并且需要背景图片,
本次demo图片位置在com/mhss/captcha下,图片大小根据SampleListImageCaptchaEngine类中的
IMAGE_WIDTH、IMAGE_HEIGHT两个参数决定。
5、效果展示
(3)改写Gimpy,验证忽略大小写。
JCaptcha在默认情况下,验证时会区别大小写,这在平时开发中是很不方便的,如今大多数的网站都忽略大小写,所以,我们需要改写Gimpy和MyGimpyFactory来实现验证时的大小写忽略。
当然也可以将验证码都设置成大写(小写),在后台获取时,统一将输入的验证码修改为大写(小写),也可以变相的实现忽略大小写功能。
1、创建MyGimpy,继承ImageCaptcha类。
2、创建MyGimpyFactory类,继承ImageCaptchaFactory类。
3、修改SampleListImageCaptchaEngine类。
(1、
(2、
csdn论坛:
Demo源代码下载: