知识大全 Java实现随机验证码功能实例

Posted 字符

篇首语:高斋晓开卷,独共圣人语。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java实现随机验证码功能实例相关的知识,希望对你有一定的参考价值。

JSP实例:Java实现随机验证码功能实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  现在许多系统的注册 登录或者发布信息模块都添加的随机码功能 就是为了避免自动注册程序或者自动发布程序的使用

  验证码实际上就是随机选择一些字符以图片的形式展现在页面上 如果进行提交操作的同时需要将图片上的字符同时提交 如果提交的字符与服务器session保存的不同 则认为提交信息无效 为了避免自动程序分析解析图片 通常会在图片上随机生成一些干扰线或者将字符进行扭曲 增加自动识别的难度

  在这里 我们使用servlet来实现随机验证码的实现

  

  package servlet; import java awt Color; import java awt Font; import java awt Graphics D; import java awt image BufferedImage; import java util Random; import javax imageio ImageIO; import javax servlet ServletException; import javax servlet ServletOutputStream; import javax servlet import javax servlet import javax servlet import javax servlet /** * 生成随机验证码 * @author bitiliu * */ public class ValidateCodeServlet extends HttpServlet private static final long serialVersionUID = L; //验证码图片的宽度 private int width= ; //验证码图片的高度 private int height= ; //验证码字符个数 private int codeCount= ; private int x= ; //字体高度 private int fontHeight; private int codeY; char[] codeSequence = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ; /** * 初始化验证图片属性 */ public void init() throws ServletException //从web xml中获取初始信息 //宽度 String strWidth=this getInitParameter("width"); //高度 String strHeight=this getInitParameter("height"); //字符个数 String strCodeCount=this getInitParameter("codeCount"); //将配置的信息转换成数值 try if(strWidth!=null && strWidth length()!= ) width=Integer parseInt(strWidth); if(strHeight!=null && strHeight length()!= ) height=Integer parseInt(strHeight); if(strCodeCount!=null && strCodeCount length()!= ) codeCount=Integer parseInt(strCodeCount); catch(NumberFormatException e) x=width/(codeCount+ ); fontHeight=height ; codeY=height ; protected void service(HttpServletRequest req HttpServletResponse resp) throws ServletException java io IOException //定义图像buffer BufferedImage buffImg = new BufferedImage( width height BufferedImage TYPE_INT_RGB); Graphics D g = buffImg createGraphics(); //创建一个随机数生成器类 Random random = new Random(); //将图像填充为白色 g setColor(Color WHITE); g fillRect( width height); //创建字体 字体的大小应该根据图片的高度来定 Font font = new Font("Fixedsys" Font PLAIN fontHeight); //设置字体 g setFont(font); //画边框 g setColor(Color BLACK); g drawRect( width height ); //随机产生 条干扰线 使图象中的认证码不易被其它程序探测到 g setColor(Color BLACK); for(int i = ; i < ; i++) int x = random nextInt(width); int y = random nextInt(height); int xl = random nextInt( ); int yl = random nextInt( ); g drawLine(x y x + xl y + yl); //randomCode用于保存随机产生的验证码 以便用户登录后进行验证 StringBuffer randomCode = new StringBuffer(); int red = green = blue = ; //随机产生codeCount数字的验证码 for (int i = ; i < codeCount; i++) //得到随机产生的验证码数字 String strRand = String valueOf(codeSequence[random nextInt( )]); //产生随机的颜色分量来构造颜色值 这样输出的每位数字的颜色值都将不同 red = random nextInt( ); green = random nextInt( ); blue = random nextInt( ); //用随机产生的颜色将验证码绘制到图像中 g setColor(new Color(red green blue)); g drawString(strRand (i + ) * x codeY); //将产生的四个随机数组合在一起 randomCode append(strRand); // 将四位数字的验证码保存到Session中 HttpSession session = req getSession(); session setAttribute("validateCode" randomCode toString()); // 禁止图像缓存 resp setHeader("Pragma" "no cache"); resp setHeader("Cache Control" "no cache"); resp setDateHeader("Expires" ); resp setContentType("image/jpeg"); //将图像输出到Servlet输出流中 ServletOutputStream sos = resp getOutputStream(); ImageIO write(buffImg "jpeg" sos); sos close();

  需要在web xml中声明servlet

  

  <servlet> <servlet name>ValidateCodeServlet</servlet name> <servlet class> servlet ValidateCodeServlet</servlet class> <init param> <param name>width</param name> <param value> </param value> </init param> <init param> <param name>height</param name> <param value> </param value> </init param> <init param> <param name>codeCount</param name> <param value> </param value> </init param> </servlet> <servlet mapping> <servlet name>ValidateCodeServlet</servlet name> <url pattern>/validateCodeServlet</url pattern> </servlet mapping>

  需要引用的页面可以这样来写

  

  <ccid_file values="validateCodeServlet" width= / />

cha138/Article/program/Java/JSP/201311/19913

相关参考

知识大全 PHP简单验证码类:字母+数字 字体随机扭曲

PHP简单验证码类:字母+数字字体随机扭曲  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  看了一

知识大全 JSP设计彩色验证码实例

JSP设计彩色验证码实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Ar

知识大全 php仿QQ验证码的实例分析

php仿QQ验证码的实例分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文介绍一个php实现的

知识大全 php ci框架验证码实例分析

  php代码复制代码代码如下:<?phpclassCaptcha_codevar$width=;var$num=;var$height=;var$name=randcode;publicfun

知识大全 JSP验证码代码

JSP验证码代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  生成有个随机数字和杂乱背景的图片

知识大全 ASP实现数字字符混合验证码

ASP实现数字字符混合验证码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  先产生一个位数的随机

知识大全 c#生成无重复的验证码

  最近公司项目做了代金卷的业余需要生成随机的位数字字母组合的条码现贴出种程序源码供大家学习和参考  方法  privatestaticchar[]constant=abcdefghijklmnopq

知识大全 Asp.net(C#)实现验证码功能两法

Asp.net(C#)实现验证码功能两法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ASP.NET 实现验证码功能的Web控件

ASP.NET实现验证码功能的Web控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  的设计方

知识大全 在Asp.net(C#)中添加程序实现验证码功能

在Asp.net(C#)中添加程序实现验证码功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n