知识大全 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简单验证码类:字母+数字字体随机扭曲 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 看了一
JSP设计彩色验证码实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Ar
php仿QQ验证码的实例分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文介绍一个php实现的
php代码复制代码代码如下:<?phpclassCaptcha_codevar$width=;var$num=;var$height=;var$name=randcode;publicfun
JSP验证码代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 生成有个随机数字和杂乱背景的图片
ASP实现数字字符混合验证码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 先产生一个位数的随机
最近公司项目做了代金卷的业余需要生成随机的位数字字母组合的条码现贴出种程序源码供大家学习和参考 方法 privatestaticchar[]constant=abcdefghijklmnopq
Asp.net(C#)实现验证码功能两法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP.NET实现验证码功能的Web控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 的设计方
在Asp.net(C#)中添加程序实现验证码功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n