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条干扰线,使图象中的认证码不易被其它程序探测到。

总结

以上是编程之家为你收集整理的Java实现随机验证码功能实例代码全部内容,希望文章能够帮你解决Java实现随机验证码功能实例代码所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

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

Java相关文章

使用SpringBoot2.x配置静态文件缓存
Java动态代理四种实现方式详解
Eclipse开发JavaWeb项目配置Tomcat的方法步骤
详解领域驱动设计之事件驱动与CQRS
SpringBoot全局配置long转String丢失精度的问题解决
springboot yml定义属性,下文中${} 引用说明
IDEA解决Java:程序包xxxx不存在的问题
编程语言榜单Java与Python并列第二!Julia下滑
MyBatis Log 插件无法显示SQL语句的原因解析
jsp response.sendRedirect()用法详解
使用springboot访问图片本地路径并映射成url
springboot文件虚拟路径映射方式