Java如何实现验证码生成

  介绍

这篇文章主要介绍了Java如何实现验证码生成,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

验证码大家都知道,它的作用也不用我多说了吧。如果不太清楚请参见百度百科中的解释,一般验证码的生成就是随机产生字符(数字,字母或者汉字等),然后将这些生成的字符绘制成一张图片,再在图片上加上一些干扰元素,如各种线条之类的。好了废话不多说一起往下看:

癑ava如何实现验证码生成"

简单的登录页面(代码并不完整,只有验证码部分)

& lt; % @  page 语言=癹ava",进口=癹ava.util。*“, pageEncoding=癠TF-8" %祝辞,   & lt; ! DOCTYPE  HTML  PUBLIC “-//W3C//DTD  HTML  4.01,过渡//EN"祝辞,   & lt; html>,   & lt; head>大敌;   ,& lt; title>验证码& lt;/title>,   ,& lt; script 类型=拔谋?javascript"祝辞,   & lt; span ,过滤数据=癴iltered"祝辞& lt;/span> & lt; span 祝辞,& lt;/span>,//刷新验证码的js函数,   & lt; span 祝辞,& lt;/span> function  changeCode (), {,   & lt; span 祝辞,& lt;/span> var  imgNode =, . getelementbyid (“vimg");,,,   ,   & lt; span 祝辞,& lt;/span>//重新加载验证码,达到刷新的目的,   & lt; span 祝辞,& lt;/span> imgNode.src =,“servlet/AuthImageServlet ? t=? +, math . random();,//,防止浏览器缓存的问题,   & lt; span 祝辞,& lt;/span>},   & lt;/script>大敌;   & lt;/head>大敌;   & lt; body>大敌;   ,& lt; form  action=癱heckServlet",方法=皃ost"祝辞,   ,& lt; label>输入验证码& lt;/label> & lt; br/祝辞,   ,& lt; input 类型=皌ext", name=皉andomCode"/祝辞& lt; img  id=皏img", title=暗慊鞲弧?onclick=癱hangeCode ();“, src=https://www.yisu.com/zixun/皊ervlet/AuthImageServlet”>
     

通过session.getAttribute (“rand"),获得生成的验证码,然后跟用户输入的进行比较,再根据比较结果做相应的处理。

通过servlet生成验证码:

package  com.util.servlet;,   ,   import  java.awt.Color,   import 属性,   import  java.awt.Graphics,   import  java.awt.image.BufferedImage,   import  java.io.IOException,   import  java.util.Random,   ,   import  javax.imageio.ImageIO,   import  javax.servlet.ServletException,   import  javax.servlet.http.HttpServlet,   import  javax.servlet.http.HttpServletRequest,   import  javax.servlet.http.HttpServletResponse,   import  javax.servlet.http.HttpSession,   ,   public  class  AuthImageServlet  extends  HttpServlet  {,   ,   ,private  static  final  String  CONTENT_TYPE =,“text/html;, charset=gb2312",,   ,//设置字母的大小,大小,   ,private  Font  mFont =, new 字体(“Times  new  Roman",, Font.PLAIN,, 17),,   ,public  void  init (), throws  ServletException    {大敌;   ,super.init (),,   }大敌;   ,Color  getRandColor (int  fc, int  bc),   {大敌;   ,Random  Random =, new 随机(),,   ,如果(fc> 255) fc=255,,   ,如果(bc> 255)公元前=255,,   ,int  r=fc + random.nextInt (bc-fc);,   ,int  g=fc + random.nextInt (bc-fc);,   ,int  b=fc + random.nextInt (bc-fc);,   ,return  new 颜色(r, g, b),,   }大敌;   ,   ,public  void 服务(请求,HttpServletRequest  HttpServletResponse 响应),throws  ServletException,, IOException    {大敌;   ,response.setHeader (“Pragma",“No-cache"),,   ,response.setHeader (“Cache-Control",“no-cache"),,   ,response.setDateHeader (“Expires",, 0),,   ,//表明生成的响应是图片,   ,response.setContentType(“图像/jpeg");,   ,,   ,int 宽度=100,身高=18;,   ,BufferedImage  image =, new  BufferedImage(宽度、高度,祝福;BufferedImage.TYPE_INT_RGB),,   ,,   ,Graphics  g =, image.getGraphics (),,   ,Random  Random =, new 随机(),,   ,g.setColor (getRandColor (200250)),   ,g.fillRect(1, 1,宽度,,高为1),,   ,g.setColor (new 颜色(102102102)),,   ,g.drawRect(0, 0,宽度,,高为1),,   ,g.setFont (mFont);,   ,   ,g.setColor (getRandColor (160200)),   ,   ,//画随机线,   ,for  (int 我=0;i

Java如何实现验证码生成