Java验证码代码

 1 public class VerifyCodeController {
 2
 3     private int width = 90;//定义图片的width
 4     private int height = 20;//定义图片的height
 5     private int codeCount = 4;//定义图片上显示验证码的个数
 6     private int xx = 15;
 7     private int fontHeight = 18;
 8     private int codeY = 16;
 9     char[] codeSequence = { ‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘, ‘H‘, ‘I‘, ‘J‘,
10             ‘K‘, ‘L‘, ‘M‘, ‘N‘, ‘P‘, ‘Q‘, ‘R‘, ‘S‘, ‘T‘, ‘U‘, ‘V‘, ‘W‘,
11             ‘X‘, ‘Y‘, ‘Z‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘ };
12
13     @RequestMapping("/getVerifyCode")
14     public void getVerifyCode(HttpServletRequest req, HttpServletResponse resp)
15                 throws IOException {
16             // 定义图像buffer
17             BufferedImage buffImg = new BufferedImage(width, height,
18                     BufferedImage.TYPE_INT_RGB);
19 //          Graphics2D gd = buffImg.createGraphics();
20             //Graphics2D gd = (Graphics2D) buffImg.getGraphics();
21             Graphics gd = buffImg.getGraphics();
22             // 创建一个随机数生成器类
23             Random random = new Random();
24             // 将图像填充为白色
25             gd.setColor(Color.WHITE);
26             gd.fillRect(0, 0, width, height);
27
28             // 创建字体,字体的大小应该根据图片的高度来定。
29             Font font = new Font("Fixedsys", Font.BOLD, fontHeight);
30             // 设置字体。
31             gd.setFont(font);
32
33             // 画边框。
34             gd.setColor(Color.BLACK);
35             gd.drawRect(0, 0, width - 1, height - 1);
36
37             // 随机产生40条干扰线,使图象中的认证码不易被其它程序探测到。
38             gd.setColor(Color.BLACK);
39             for (int i = 0; i < 40; i++) {
40                 int x = random.nextInt(width);
41                 int y = random.nextInt(height);
42                 int xl = random.nextInt(12);
43                 int yl = random.nextInt(12);
44                 gd.drawLine(x, y, x + xl, y + yl);
45             }
46
47             // randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
48             StringBuffer randomCode = new StringBuffer();
49             int red = 0, green = 0, blue = 0;
50
51             // 随机产生codeCount数字的验证码。
52             for (int i = 0; i < codeCount; i++) {
53                 // 得到随机产生的验证码数字。
54                 String code = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]);
55                 // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
56                 red = random.nextInt(255);
57                 green = random.nextInt(255);
58                 blue = random.nextInt(255);
59
60                 // 用随机产生的颜色将验证码绘制到图像中。
61                 gd.setColor(new Color(red, green, blue));
62                 gd.drawString(code, (i + 1) * xx, codeY);
63
64                 // 将产生的四个随机数组合在一起。
65                 randomCode.append(code);
66             }
67             // 将四位数字的验证码保存到Session中。
68             HttpSession session = req.getSession();
69             System.out.print(randomCode);
70             session.setAttribute("verifycode", randomCode.toString());
71
72             // 禁止图像缓存。
73             resp.setHeader("Pragma", "no-cache");
74             resp.setHeader("Cache-Control", "no-cache");
75             resp.setDateHeader("Expires", 0);
76
77             resp.setContentType("image/jpeg");
78
79             // 将图像输出到Servlet输出流中。
80             ServletOutputStream sos = resp.getOutputStream();
81             ImageIO.write(buffImg, "jpeg", sos);
82             sos.close();
83
84     }
时间: 2024-10-14 17:08:06

Java验证码代码的相关文章

Java验证码的jar制作

Java验证码代码: package cn.itcast.image; import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.IOException;import java.io.OutputStream;import java.util.Random;

(转)java验证码识别

java验证码识别--1 http://blog.csdn.net/problc/article/details/5794460 java验证码识别--2 http://blog.csdn.net/problc/article/details/5797507 java验证码识别--3 http://blog.csdn.net/problc/article/details/5800093 java验证码识别--4 http://blog.csdn.net/problc/article/detail

springMVC+Java验证码完善注册功能

这篇文章简单的写了一个java验证码,为之前写过的springMVC注册功能加上验证码,验证码的作用就不多说了,防止机器人程序恶意注册什么的... 基本的注册功能的实现请查看之前的文章Maven搭建springMVC+spring+hibernate实现用户注册 其中,我修改了该注册程序的部分代码,其中User.java,加上了password和code的属性,同时将password持久到数据库,code属性使用@transient注解使其不被持久到数据库. User.java 中加上这两个属性

Java 验证码工具类

验证码代码工具代码如下: import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.awt.image.RenderedImage;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.HashMap;import java.util.Map;import java.

Java静态代码分析工具Infer

Java静态代码分析工具Infer 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.Infer介绍 Infer是Facebook最新开源的静态程序分析工具,用于在发布移动应用之前对代码进行分析,找出潜在的问题.目前Facebook使用此工具分析Facebook的App,包括Android.iOS.Facebook Messenger和Instagram等. Facebook称该工具帮助其每个月检查出应用潜在的数百个Bug,例如一些空指针访问.资源

常用 Java 静态代码分析工具的分析与比较

转载自: http://www.oschina.net/question/129540_23043 简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中. 引言 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代

左右JAVA示例代码事件分发和监督机制来实现-绝对原创有用

文章标题:左右JAVA示例代码事件分发和监督机制来实现 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景如果 如果有博客系统中须要实现例如以下功能: 系统中用户公布文章.改动文章.删除文章时,须要一些相关的操作须要运行. 公布文章后,给好友发送邮件通知.给用户加积分,对文章做全文索引. 改动文章后,给好友发送邮

java实现代码高亮

1 package JavaSyntaxHighterDemo; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileInputStream; 6 import java.io.InputStreamReader; 7 import java.util.Arrays; 8 import java.util.HashSet; 9 import java.util.Set; 10 11 /**

转载——Java与WCF交互(一)补充:用WSImport生成WSDL的Java客户端代码

在<Java与WCF交互(一):Java客户端调用WCF服务>一文中,我描述了用axis2的一个Eclipse控件生成WCF的Java客户端代理类,后来有朋友建议用Xfire.CXF,一直没有尝试,今天有朋友指出JDK6可以用java自带的一个WSImport工具,试了下,果然很爽,这是一个exe文件,位于%JAVA_HOME%\bin下,它的官方使用说明,见:http://download-llnw.oracle.com/javase/6/docs/technotes/tools/share