`
islong
  • 浏览: 16046 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

完整验证码

 
阅读更多

public class CodeServlet extends HttpServlet {
/**
* 生成验证码图片
* @param request 客户端请求对象
* @param response 响应对象
* @throws ServletException
* @throws IOException
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {

//设置输出的内容的格式为图象类型,并且为jpeg格式
response.setContentType("image/jpeg");
//设置页面不缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

// 在内存中创建图象
int width = 60, height = 20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);

// 获取图形上下文
Graphics g = image.getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);
//设定字体
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));

//画边框
//g.setColor(new Color());
g.drawRect(0, 0, width - 1, height - 1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(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);
}

// 取随机产生的认证码(4位数字)
String code = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
code += 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
HttpSession session = request.getSession();
session.setAttribute("extracodeSession", code);

// 图象生效
g.dispose();

// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
}

/**
* 给定范围获得随机颜色
* @param fc 起始值
* @param bc 终止值
* @return 颜色
*/
private 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);
}

/**
* 生成验证码图片
* @param request 客户端请求对象
* @param response 响应对象
* @throws ServletException
* @throws IOException
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
}

分享到:
评论

相关推荐

    php完整验证码实例

    php完整验证码实例 完整的实例 需要在服务器环境 session存储

    OCRServer识别验证码.zip

    4. 结果输出:将识别出的文字组合成完整验证码,返回给用户。 三、性能测试与优化 在实际应用中,OCRServer的性能至关重要。主要关注以下几个方面: 1. 识别率:衡量OCRServer正确识别验证码的能力,高识别率意味...

    易语言验证码图片生成

    验证码图片生成技术是一种常见的安全措施,...在实际应用中,开发者可能会结合这些基本功能,编写出符合项目需求的完整验证码生成程序。通过易语言,初学者也能快速理解验证码的生成原理,并动手实现自己的验证码系统。

    java完美的验证码生成

    综上所述,本示例提供了从生成随机字符串到绘制图像的完整验证码解决方案,并且允许定制验证码的类型(数字、英文、中文)和长度。通过学习和修改这个示例,开发者可以根据具体项目需求轻松地构建自己的验证码系统,...

    图片验证码离线生成jar包

    - **验证码生成导入后使用.jar**:可能是一个包含了完整验证码生成逻辑的库,供开发者导入到自己的项目中使用。 - **验证码jar包示例代码.txt**:可能包含了一些示例代码,展示如何在Java项目中导入和使用这个JAR...

    简单完整的PHP验证码

    下面,我们将深入探讨如何在PHP中创建一个简单而完整的数字与英文混合的验证码系统。 1. **验证码的基本原理**: 验证码通常由一串随机字符组成,这些字符可能是数字、字母或其他符号。用户在访问特定页面时会看到...

    验证码文字识别opencv源代码+资源.rar

    5. **组合成完整验证码**:识别出每个字符后,将它们按照正确的顺序组合起来,形成完整的验证码文本。 在提供的压缩包中,你将找到源代码,这部分代码可能已经实现了上述步骤,并且已经过训练,可以直接使用。同时...

    js验证码验证码插件,简单易用、图片验证码,附demo

    "captcha-master"可能是这个插件的源代码仓库,包含完整的示例。在实际应用中,你可以按照以下步骤操作: - **安装**:首先,你需要将下载的压缩包解压,然后在项目中引入相关的JavaScript和CSS文件。 - **配置**...

    短信验证码完整版

    短信验证码完整版

    JAVA实现验证码(完整代码)

    JAVA 实现验证码(完整代码) JAVA 实现验证码是一种常见的验证机制,用于防止机器人和自动程序的攻击。下面是关于 JAVA 实现验证码的详细知识点: 验证码的概念和作用 验证码是一种challenge-response测试,用于...

    php识别验证码完整例子

    在这个"php识别验证码完整例子"中,我们将探讨如何创建一个简单的PHP验证码系统。 首先,验证码的生成通常包括以下步骤: 1. **随机字符串生成**:PHP内置的`rand()`或`mt_rand()`函数可以生成随机数,结合字符集...

    爱码验证码飞Q验证码手机验证码模块

    “爱码验证码”是一个专业的验证码服务提供商,它提供了多种类型的验证码解决方案,包括图形验证码、语音验证码和短信验证码。它的服务特点是高效、稳定,能够有效防止机器人和恶意攻击,同时保证用户体验。通过集成...

    .NET验证码完整程序

    完整的.NET验证码程序,拷贝就可以用!

    php识别验证码完整例子 php56版本

    在本文中,我们将深入探讨如何在PHP 5.6环境下实现一个完整的验证码识别系统。验证码是一种常用的安全机制,用于防止自动机器人或恶意脚本进行非法操作,如批量注册、垃圾邮件发送等。PHP 5.6是较早的PHP版本之一,...

    springboot生成验证码完整demo

    springboot生成验证码完整demo

    微信小程序发送短信验证码完整实例

    微信小程序发送短信验证码的完整实例涉及到微信小程序开发的多个方面,包括前端页面设计、事件处理、以及调用后端服务。本实例中利用了微信小程序的前端开发框架和微信提供的API来实现无需服务器端的短信验证码发送...

    vcg(验证码控件)

    功能介绍:  为网页编程人员提供能够自动生成验证码图像并验证网页访问者输入的Web控件,具体功能如下: 1. 提供简单易用的设计时所见即所得的可视化设置方式,并且支持设计时验证码图像效果与特效属性设置...

    完整随机验证码实例

    在这个“完整随机验证码实例”中,我们将深入探讨验证码的实现方法,包括它的基本原理、设计思路以及在实际应用中的调用方式。 验证码的基本原理是通过显示一组难以被计算机程序自动识别的图像或音频信息,要求用户...

    layUI的验证码功能及校验实例

    综上所述,该文件内容为开发者提供了一个使用layUI框架实现canvas验证码功能的完整示例。开发者通过理解并实施上述知识点,可以快速实现自己的验证码功能,并通过合适的前端校验增强应用的安全性。

    jquery实现验证码功能 完整代码

    本篇文章将深入探讨如何使用jQuery实现验证码功能,以及提供的完整代码。 首先,验证码的基本原理是服务器生成一串随机字符串,通常包含字母、数字、特殊字符,然后将其显示在网页上,用户需要输入相同的内容以证明...

Global site tag (gtag.js) - Google Analytics