之前有很多刚到公司的人问我在项目中使用的验证码的问题,都没有做出详细的解答,今天借着晚上空闲自己搞了个小例子给大家希望大家看的明白。
package com.kevin.common.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
public class Image {
//验证码图片中可以出现的字符集,可根据需要修改
private char mapTable[]={
'a','b','c','d','e','h',
'j','k','m','n','p','q',
'r','s','t','u','v','w',
'x','y','z','0','2','3',
'4','5','6','7','8','9'
};
public String getCertPic(int width, int height,OutputStream os) {
if(width<=0) {
width=60;
}
if(height<=0) {
height=20;
}
BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
//获取图形上下文
Graphics g = image.getGraphics();
//设定背景颜色
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, width, height);
//画边框
g.setColor(Color.black);
g.drawRect(0, 0, width-1, height-1);
//随机产生的验证码
String strEnsure="";
//4代表4位验证码,如果要生成等多位的验证码 ,则加大数值
for(int i=0; i<4; i++) {
strEnsure += mapTable[(int)(mapTable.length*Math.random())];
}
//将验证码显示在图像中,如果要生成更多位的验证码,增加drawString语句
g.setColor(Color.black);
g.setFont(new Font("Atlantic Inline", Font.PLAIN,18));
String str = strEnsure.substring(0, 1);
g.drawString(str, 8, 17);
str = strEnsure.substring(1, 2);
g.drawString(str, 20, 15);
str = strEnsure.substring(2, 3);
g.drawString(str, 35, 18);
str = strEnsure.substring(3, 4);
g.drawString(str, 45, 15);
//随机产生10个干扰点
Random random = new Random();
for(int i=0; i<10; i++ ) {
int x = random.nextInt(width);
int y = random.nextInt(height);
g.drawOval(x, y, 1, 1);
}
g.dispose();//释放图形上下文
try{
ImageIO.write(image, "JPEG", os);//输出图像到页面
}catch(IOException e) {
return "";
}
return strEnsure;
}
}
测试通过。
很晚了,要休息了。有什么问题请即使留言给我。
分享到:
相关推荐
用java实现的简单验证码程序,仅仅实现了随机文字,而且只是数字,未加入背景图片和干扰线
JAVA实现随机图片验证码简单方法.rtf
3.1.JAVA掌握AWT的BufferedImage、Graphics2D、Font;Redis;图片生成随机位置 随机中文文字、随机抠图、拼图都只需要用到BufferedImage和Graphics2D。 3.2.前端熟悉点击事件,根据点击事件的坐标位置、图片的位置...
Java 实现简单验证码生成 Java 实现简单验证码生成是指通过 Java 语言生成一个简单的验证码图片,用于验证用户的身份。下面是关于 Java 实现简单验证码生成的知识点: 1. 验证码生成原理 验证码生成是通过随机...
本篇文章将详细讨论验证码的基本原理,以及如何使用Java实现简单的验证码破解方法。请注意,了解验证码破解知识主要是为了提高网站安全意识,避免自身系统被攻击,而不是用于恶意破解他人系统。 验证码的类型主要有...
通过以上步骤,我们就可以在Java中实现一个简单的验证码绘制功能。当然,实际应用中可能还需要考虑其他因素,如性能优化、字符集的多样性和复杂度平衡、防止OCR破解等。在开发过程中,可以参考开源的验证码库,如...
Java使用Servlet实现登录验证码涉及到的是Web开发中的安全性与用户体验部分。验证码是一种常用的安全机制,用于防止自动化的机器人或恶意程序进行非法操作,如批量注册、恶意登录等。在这个例子中,我们将探讨两种...
本文将深入探讨如何使用Java来创建一个简单的图形验证码。 首先,我们需要了解验证码的基本原理。验证码通常包含一串随机生成的字符,这些字符可能是字母、数字或者两者的组合,设计得难以被计算机程序自动识别,但...
今天整理了一个java实现的汉字输入验证码 主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确 实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码图片并用...
本文将详细讲解Java环境下实现验证码识别的基本原理和步骤,并结合提供的源码进行深入解析。 首先,验证码的主要目的是为了防止自动化的机器人程序进行非法操作,例如批量注册、恶意登录等。验证码通常由一串随机...
本篇文章将详细讲解如何使用Java的Servlet技术来实现一个简单的网站验证码功能。 首先,我们需要理解Servlet。Servlet是Java提供的一种服务器端编程接口,用于扩展Web服务器的功能。它能够接收HTTP请求并生成HTTP...
在这个过程中,我们将探讨如何使用Java语言来创建一个简单的动态验证码系统,主要包括以下几个关键知识点: 1. **图形库的使用**:在Java中,我们通常使用`java.awt`和`javax.swing`包来处理图形。这两个包提供了...
在Java Web开发中,我们可以使用Servlet和JSP来实现一个简单的图形验证码。以下将详细介绍如何利用这两个技术进行验证码的实现。 首先,理解验证码的基本原理:验证码是一种通过图像显示随机字符或数字的方式,用户...
Java作为一种广泛使用的编程语言,具有丰富的库和工具支持,使得验证码的实现变得相对简单。 验证码通常由一串随机字符组成,这些字符可以是数字、字母或其他特殊符号,它们被扭曲、旋转或者添加噪声,以增加机器...
在这个简单的示例中,我们将会探讨如何在Java环境中实现这一功能。 首先,我们需要理解验证码的核心原理。验证码通常由一串随机生成的数字或字母组成,它通过网络发送到用户的手机,用户需要在应用程序中输入接收到...
要实现一个简单的Java验证码,我们需要以下步骤: 1. **生成随机字符串**:首先,我们需要生成一个随机的字符串,这可以通过Java的`Random`类和`StringBuilder`类配合实现。可以设置字符串的长度和包含的字符集(如...
首先,我们来看JAVA实现的验证码。JAVA作为一种广泛使用的后端编程语言,具有丰富的库和工具来创建各种类型的验证码。教程中提到的七种JAVA验证码可能包括: 1. 图片验证码:这种验证码通过生成随机的字符或数字...
本教程将深入探讨如何使用Java语言和kaptcha包来实现不同类型的验证码,包括字符与数字混合的验证码、中文验证码以及算术运算式的验证码。 首先,kaptcha是一个强大的开源验证码生成库,它提供了丰富的配置选项,...
在Java Web开发中,验证码是一种常见的安全机制,用于防止自动化的机器人或恶意用户进行非法操作。本实例将探讨如何使用简单的Servlet生成加法验证码,并将其整合到Struts2、SSH2(Spring、Struts2、Hibernate)和...
通过以上步骤,我们可以实现一个简单的Java JSP验证码功能。这个过程涉及到Java基础、图像处理、HTTP会话管理等多个方面,是Web开发中常见且重要的安全机制。在实际应用中,可以根据项目需求进行定制和扩展,例如...