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

验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行番茄花园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实现随机验证码功能实例代码相关推荐

  1. java生成验证码实例_Java生成验证码功能实例代码

    页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...

  2. java 随机手机验证码_基于Java随机生成手机短信验证码的实例代码|chu

    简单版 /** * 产生4位随机数(0000-9999) * * @return 4位随机数 */ public static String getFourRandom() { return Stri ...

  3. android 首字母 验证码,Android 验证码功能实现代码

    先给大家展示下效果图,如果大家感觉还不错,请参考实现代码 很简单的一个例子,点击刷新验证码,刷新当前显示的验证码,点击确定,如果输入的和显示的匹配,就会跳转到下一个界面中,这里只是实现了跳转,并没有进 ...

  4. java+生成手机验证码_基于Java随机生成手机短信验证码的实例代码

    简单版 /** * 产生4位随机数(0000-9999) * * @return 4位随机数 */ public static String getFourRandom() { return Stri ...

  5. php mysql随机抽奖源码_PHP实现抽奖功能实例代码

    在项目开发中经常会遇到花钱抽奖类型的需求.但是老板总是担心用户用小钱抽到大奖.这样会导致项目亏损.下边这段代码可以有效制止抽奖项目亏钱. 个人奖池: 语言:thinkphp redis mysql 表 ...

  6. java ftp服务器_Java实现FTP服务器功能实例代码

    FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Downl ...

  7. python 12306登录_Python 实现12306登录功能实例代码

    下面一段代码给大家带来了python实现12306登录功能,具体代码如下所示: #!/usr/bin/env python import requests import urllib.parse im ...

  8. 用html做个随机点名系统代码,html座位表随机点名的实例代码

    这篇文章详解html座位表随机点名的实例代码 点名 td { width: 9.09%; height: 50px; text-align: center; } .tdBg { background- ...

  9. python编程实例视屏-使用Python实现视频下载功能实例代码

    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容.如果有一个程序可以把各大视频网站的热门用户最新发布的视频下载下来,不仅方便了观看,还可以将没有版权的视频发布在个人社交网站上,增加自 ...

最新文章

  1. System.Data.SqlClient.SqlException:“ ',' 附近有语法错误。必须声明标量变量 @Password。”
  2. bzoj千题计划303:bzoj4827: [Hnoi2017]礼物
  3. Linus Torvalds 谈居家办公:不要在家中重新搞一个办公室
  4. FCKeditor 2.6 精简版
  5. JQuery的无缝滚动
  6. Vue2.x通用编辑组件的封装及应用
  7. jpa 托管_JPA EntityManager详解(一)
  8. 1一10到时的英文单词_哈尔滨一山羊皮,叫雪地皮衣!刮风下雪不冻身,10年免洗不过时...
  9. 卸载ruby on rails
  10. python 如何加密_Python如何玩转加密?
  11. iphone 装 android系统,如何在iPhone上安装Android系统
  12. 离散数学第二章(知识点总结)续
  13. 前端测试框架Jest系列教程 -- Matchers(匹配器)
  14. 如何把html文件转化为mp3,如何将Flash转换为MP3
  15. 智慧校园的关键技术:云计算+物联网+大数据
  16. 时间敏感网络TSN及其标准
  17. dh协议c语言代码,openssl开源程序dh算法解析之dh_ameth.c
  18. cmd命令行激活win7
  19. 【职场攻略】送礼给老板有讲究
  20. 网易云音乐登录信息加密算法详解

热门文章

  1. 《Java程序性能优化》-笔记
  2. 放松跑、间歇跑、节奏跑和LSD
  3. 【群晖NAS】 利用云服务器 FRP技术 实现内网穿透
  4. mysql grant produce_ERROR 1045 (28000) Mysql中grant 使用不当导致的生产事故
  5. 登录Linux操作系统并执行第一个C语言代码
  6. 基于EasyNVR摄像机流媒体服务器实现RTSP或Onvif监控摄像头Web无插件化直播监控
  7. 基于C++实现的图像检索系统
  8. 木马冰河之原理篇(深入浅出看木马)
  9. Uniapp——拨打电话、发送短信
  10. [机器学习]三行代码快速划分交叉训练中训练集和验证集