Java随机生成图片与HTML表单中的验证码实现

Java随机生成图片

用Java语言生成一个带有字符串文本的图片总结来说只需要如下四步:

  • 1.创建图片缓冲区
  • 2.设置图片缓冲区的宽高及保存图片的类型
  • 3.得到这个图片的绘制环境(拿到画笔)
  • 4.将图片保存起来

代码如下:

//第一、二步,传入参数为缓冲区宽、高、保存图片类型
BufferedImage image=new BufferedImage(width1,height1,BufferedImage.TYPE_INT_RGB);

//第三步,得到绘制环境(需要用到Graphics类)
Graphics paint=image.getGraphics();
paint.setColor(Color.WHITE);//设置画笔颜色为白色
paint.fillRect(start,end,width2,height2);//绘制矩形并填充,将图片缓冲区的(start,end)坐标作为绘制图片的左上角坐标,绘制图片宽为width2、高为height2
paint.setColor(Color.RED);//设置画笔颜色为红色
paint.drawString(str,x,y);//设置需要绘制在图片上的文本,参数为字符串、字符串所在的x坐标和y坐标

//第四步,将图片保存起来(需要用到ImageIO类)
ImageIO.write(image,"JPEG",out);//参数为图片缓冲区、图片类型、输出流  

通过以上代码便可实现用java语言生成一个简易的带有字符串文本的图片,具体实现如下,首先在IDEA中创建VerifyCode.java类:

有错误,请将g.drawStrig(sb.toString(),width/4,height-5);改为g.drawString(str,i*width/4,height-5);

通过代码VerifyCode vc=new VerifyCode();创建VerifyCode对象后就可以调用上述所有方法便可以实现随机验证码的图片了。

在HTML表单中实现验证码

借用上篇Java Web学习笔记之session入门中的保存用户登录信息案例中的代码,新增:

  • VerifyServlet.java:生成图片,保存图片上的文本到session域中,将图片响应给客户端。
  • LoginServlet.java中新增作用:判断用户输入的验证码是否正确,若正确则跳转至下一链接,若错误则保存错误信息到request域中,然后请求转发至login.jsp登录页面。

代码如下图:

VerifyServlet.java

LoginServlet.java

login.jsp(用到了javascript语法来更换验证码)


10月8日更正:途中的js代码有错误,将”ducument”改为”document”。

通过如上代码便可实现HTML中的验证码效果。

2018.3.19更

欢迎加入我的Java交流1群:659957958。

2018.4.21更:如果群1已满或者无法加入,请加Java学习交流2群:305335626


联系

If you have some questions after you see this article,you can tell your doubts in the comments area or you can find some info by clicking these links.

记得扫一扫领一下红包再走哦