Java实现随机验证码功能实例代码

编程之家收集整理的这篇文章主要介绍了Java实现随机验证码功能实例代码编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在这里,我们使用servlet来实现随机验证码的实现,有需要的朋友可以参考一下

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

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

复制代码 代码如下:

package com.servlet;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.util.Random;

import javax.imageio.ImageIO;

import javax.servlet.servletexception;

import javax.servlet.ServletoutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

/**

* 生成随机验证码

* @author bitiliu

*

*/

public class ValidateCodeServlet extends HttpServlet

{

private static final long serialVersionUID = 1L;

//验证码图片的宽度。

private int width=60;

//验证码图片的高度。

private int height=20;

//验证码字符个数

private int codeCount=4;

private int x=0;

//字体高度

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', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

/**

* 初始化验证图片属性

*/

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()!=0)

{

width=Integer.parseInt(strWidth);

}

if(strHeight!=null && strHeight.length()!=0)

{

height=Integer.parseInt(strHeight);

}

if(strCodeCount!=null && strCodeCount.length()!=0)

{

codeCount=Integer.parseInt(strCodeCount);

}

}

catch(NumberFormatException e)

{}

x=width/(codeCount+1);

fontHeight=height-2;

codeY=height-4;

}

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws servletexception, java.io.IOException {

//定义图像buffer

BufferedImage buffImg = new BufferedImage(

width, height,BufferedImage.TYPE_INT_RGB);

Graphics2D g = buffImg.createGraphics();

//创建一个随机生成器类

Random random = new Random();

//将图像填充为白色

g.setColor(Color.WHITE);

g.fillRect(0, 0, width, height);

//创建字体,字体的大小应该根据图片的高度来定。

Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);

//设置字体。

g.setFont(font);

//画边框。

g.setColor(Color.BLACK);

g.drawRect(0, 0, width - 1, height - 1);

//随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


今天小编给大家分享的是Java读取resources中资源文件路径以及jar中文件无法读取如何解决,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容...
本篇文章和大家了解一下javaweb中servlet技术的用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。ServletServlet(Server Applet)是Jav...
今天小编给大家分享的是JavaScrip简单数据类型隐式转换如何实现,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会...
这篇文章主要介绍了只返回实体类中的部分字段问题如何解决,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。如何只返回实体类中的部分字段在...
今天小编给大家分享的是java的预定义Class对象的方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的...
今天小编给大家分享的是Java中线程安全的实现思路介绍,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的...
今天小编给大家分享的是Java中如何实现String字符串分割,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获...
《》是一本介绍Java图形用户界面编程的实践指南。该书由Java编程专家编写,旨在帮助读者深入了解Java GUI编程的基本原理和实践技巧,从而能够开发出高质量、易用性强的GUI应用程序。