比较常用的功能,记录一下。

一、流程实现

(1)如何实现产生验证码的服务端?

需要用到的java自带的awt图像包、java的math随机数包、io包、servlet包。

分析一下:

首先是@WebServlet注解,由于servlet3.0使用注解确定地址,就不需要在web.xml里进行配置了(顺带一提,如果强行配置,会导致冲突,tomcat会跑不起来。这个问题前面也提到过了,就是那个tomcat无法启动的问题)。

因为验证码也是一个网络资源,需要用Get方式获取,所以也是servlet的一部分,需要继承httpservlet类。

首先要定义一个图片的缓冲区。

bufferedimage,68是宽,22是高,而后面的是缓冲的类型。

BufferedImage子类描述具有可访问图像数据缓冲区的Image。BufferedImage由图像数据的ColorModel和Raster组成。Raster的SampleModel中band的数量和类型必须与ColorModel所要求的数量和类型相匹配,以表示其颜色和alpha分量。所有BufferedImage对象的左上角坐标都为(0, 0)。因此,用来构造BufferedImage的任何 Raster都必须满足:minX=0且minY=0。

graphics,从图片缓冲区获得图像,制图,color获得颜色,然后通过setcolor去为图片填充颜色,然后去指定填充的区域。

需要一个验证码的数组,有一些特殊字符:什么1,i,l什么的不好区分,我就把他们删掉了。

创建一个string类型的字符串,把要显示在验证码图片上的关键字全部写上,然后通过toChararry序列化成一个数组。

之后用random获取一个随机数,获取数组长度,最后通过for循环,依次确定4个验证字母,并且绘制在图片上。

(2)怎么判断用户输入是否正确呢?

这里需要特别注意,弄验证码是为了让人验证的,那么怎么判断用户输入是否正确呢?

答案是通过验证码的字母串。生成图片的同时需要把验证码的字符串记录下来。

(3)怎么保存这个验证码的值?

需要在服务器中创建一个session,采用键值对的方法,名为piccode,用的时候取出来

最后,用流的形式就可以把图片输出了。

(4)怎么去实现验证验证码的服务端

记得我们前面创建了piccode的session吗?

这时可以把里面的保存的验证码拿出来和post进来的数据进行比对,正确就返回1,错误返回0,交给前端的ajax去进行相应的处理。

(5)如何在客户端获取验证码图片?

这样既可以获取了。

(6)那么怎么去调整图片格式(大小)?

你生成的图片大小不一定就是你页面上需要的大小,这时候你可以用css进行图片的放缩处理,在客户端进行图片的调整。当然你也可以在服务端去调整生成验证码的图片大小(我个人认为没有什么必要,毕竟前端配合后端的情况是比较多的)。

(7)如何在客户端判断验证码正确与否?

这里是通过ajax去传输验证码,来验证对错,如果正确,才激活登录按钮,否则将提示错误信息。

(8)如何去刷新验证码?

写一个方法:

清空输入框,然后更换img的src属性,重新请求一张验证码图片。

因为一些浏览器的缓存问题,如果访问的图片地址一样,浏览器很可能回去调用缓存,显示出来的都是缓存中的图片。

这时就要加上一个当前的时间戳,让浏览器每次都认为这是一个新的连接,就不会重复读取缓存中的图片,而是重新获得一张图片。

一定要记得把判断用的参数都重置。

二、总结

java实现验证码的基本流程,记录一下。

1 对 “java 实现验证码的基本流程”的想法;

发表评论

电子邮件地址不会被公开。 必填项已用*标注