import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
public class CheckCode {
// // 设置页面不缓存
// response.setHeader("Pragma", "No-cache");
// response.setHeader("Cache-Control", "no-cache");
// response.setDateHeader("Expires", 0);
// 在内存中创建图象
public static void main(String[] args) throws IOException {
// System.out.println("create ramdom image");
// 配置验证码显示方式(位数,含字母)
int imageWidth = 5;
boolean hasChar = true;
int width = imageWidth * 15, height = 20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 生成随机类
Random random = new Random();
// 设定背景色
g.setColor(new Image().getRandColor(200, 250));
g.fillRect(0, 0, width, height);
// 设定字体
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
// 画边框
g.setColor(new Color(height));
g.drawRect(0, 0, width - 1, height - 1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(new Image().getRandColor(160, 200));
for (int i = 0; i < 155; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x, y, x + xl, y + yl);
}
// 取随机产生的认证码(imageWidth位数字)
String sRand = "";
for (int i = 0; i < imageWidth; i++) {
String rand;
if (i % 2 == 0 && hasChar) {
rand = String.valueOf((char) (((random.nextInt(99)) % 2 == 0 ? 65 : 97) + random.nextInt(26)));
sRand += rand;
} else {
rand = String.valueOf(random.nextInt(10));
sRand += rand;
}
// 将认证码显示到图象中
g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt
(110)));
// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand, 13 * i + 6, 16);
}
// // 将认证码存入SESSION
// request.getSession().setAttribute("rand", sRand);
//
// 图象生效
// g.dispose();
//
// // // 输出图象到页面
// // ImageIO.write(image, "JPEG", response.getOutputStream());
// // return null;
ImageIO.write(image, "jpeg", new File("d:\\helloImage.jpeg"));
}
}
class Image {
/**
* <p>
* Discription:[给定范围获得随机颜色]
* </p>
*
* @param fc
* @param bc
* @return
* @author:[twssy] http://hi.baidu.com/twssy/ http://www.wolaodao.cn
* @update:[日期YYYY-MM-DD] [twssy][变更描述]
*/
public Color getRandColor(int fc, int bc) {
Random random = new Random();
if (fc > 255) fc = 255;
if (bc > 255) bc = 255;
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}
}
参考地址:http://hi.baidu.com/twssy/blog/item/ce3425d18add833b9a5027ae.html
分享到:
相关推荐
【标签】"java_checkcode_" 指明了这个功能的核心是Java实现的校验码。标签可能用于搜索或分类,便于其他开发者找到与Java校验码相关的资源。 【压缩包子文件的文件名称列表】中的"www.pudn.com.txt"可能是一个说明...
可以使用此代码来实现注册或登录时动态生成验证码,字符范围是a-zA-Z以及从0到9,随机生成四个字符,并且有图形,直线等作为扰乱。
以上就是Java实现18位身份证格式验证算法的主要知识点,通过这些步骤,可以有效地检查输入的身份证号码是否符合中国的身份证规则。在开发过程中,应结合实际情况,考虑异常处理和性能优化,以提供更稳定和高效的验证...
验证码在信息技术领域中扮演着重要的...总的来说,JAVA实现验证码的源代码是一个很好的学习资源,不仅能够帮助开发者理解图形处理、随机数生成以及网络通信等相关知识,还能够提升他们在实际项目中解决安全问题的能力。
3. **Java实现步骤** - **服务端配置** - 生成密钥对:使用Java的GoogleAuthenticatorKeyGenerator类生成一个密钥,这将用于服务端存储。 - 分享密钥:将生成的密钥编码成QR码,用户可以通过扫描这个二维码在他们...
java实现短信验证码5分钟有效时间 java实现短信验证码5分钟有效时间是指在java语言中实现短信验证码的功能,每个验证码的有效时间为5分钟。这种实现方式可以在电商、银行、社交媒体等领域广泛应用,例如,在用户...
public static char[] checkcode(char[] chr1) { char[] chr = "0123456789abcdefhijkmnpqrstuvwxyABCDEFGHJKLMNPQRSTUVWXY".toCharArray(); Random r = new Random(); int n = chr.length; boolean[] used = ...
在Java中实现验证码小程序涉及到多个关键步骤和技术,主要包括生成随机字符串、创建图像、绘制...以上就是Java实现验证码小程序的主要技术点和步骤。通过这些步骤,我们能够创建一个安全且用户体验良好的验证码系统。
remote: "checkCode.action" } }, messages: { email: { required: "请输入", email: "请输入正确的Email格式" }, nickname: { required: "必须输入", minlength: "至少4个字符", maxlength: "不能超过...
这个“javaweb验证码实现demo”很可能是为了展示如何在Java Web应用中集成验证码功能。 验证码的实现主要包括以下几个关键步骤: 1. **生成随机验证码**:首先,我们需要创建一个可以生成随机字符串的方法。这个...
在Java中,可以编写一个工具类来实现身份证号码的有效性检查,例如通过正则表达式验证长度和结构,以及计算校验码是否正确。 手机号码验证则涵盖了中国三大运营商——中国移动、中国联通和中国电信的号码。此外,还...
在这个主题中,“java验证码/servlet”指的是使用Java语言和Servlet技术来实现验证码功能。下面将详细介绍这个主题中的相关知识点。 1. **验证码的原理**: 验证码的主要目标是区分人类用户和计算机程序。它通常...
Java作为常用编程语言,拥有丰富的机器学习库,如Weka、MLlib(Spark的一部分)和SMO(Sequential Minimal Optimization,SVM的一种优化算法实现)等,可以用来实现SVM验证码识别。 总结来说,"checkCode"项目展示...
该Java类`CheckCode`继承自`HttpServlet`,主要实现了`doGet`和`doPost`方法,用于生成并返回验证码图片。下面对关键部分进行详细解读: ##### 1. `doPost` 方法 ```java public void doPost(HttpServletRequest ...
本文档将深入解析一个Java项目中的动态验证码实现方法,该方法利用Java后端技术生成验证码图片,并通过JavaScript从前端调用这些功能,以确保系统的安全性与用户体验。 #### 二、关键技术点 ##### 2.1 代码结构与...
Java的项目实例学习 本项目是个人的一些java项目练习源码,分享给大家,希望可以和大家一起进步! Java项目实例 swagger2-boot-starter ...checkcode Java 制作验证码 IMOOCSpider 简易网络爬虫
java项目练习源码,分享给大家,希望可以和大家一起进步! Java项目实例 swagger2-boot-starter SpringBoot-Shiro 秒杀业务 Woss2.0 电信采集系统 ...checkcode Java 制作验证码 IMOOCSpider 简易网络爬虫
在这个imooc课程中,"checkcode"可能是生成和校验验证码的Servlet类名或者是相关的文件夹,包含用于生成验证码的Java源代码和可能的配置文件。学习者需要理解Servlet的工作原理,以及如何在Java中生成和操作图像,...
首先,我们需要创建一个CheckCode类,这是`CheckCode.java`文件的核心。这个类将生成并存储验证码的信息,包括验证码的图像和实际值。验证码的生成通常涉及以下步骤: 1. **随机生成验证码值**:使用`java.util....
本文档主要介绍两种常见的验证码实现方式:一种是基于JSP的验证码生成方法,另一种则是基于Java的验证码生成逻辑。这两种方式均能有效防止自动化工具对网站进行恶意操作,增强系统的安全性。 #### JSP 实现验证码 ...