`
yanghuidang
  • 浏览: 950682 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

生成图片验证码

 
阅读更多
package test; 



import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage;



import java.io.OutputStream;



import java.util.Random;



import javax.imageio.ImageIO;



import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



public class ImageGenerator extends HttpServlet {



private static final long serialVersionUID = -3938318741402322164L;



private static 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);

}



private static String charsLong = "23456789abcdefghjklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";

private static String charsShort = "0123456789";

private static String chars = charsLong;



@Override

public void doGet(HttpServletRequest request, HttpServletResponse response) {

try {

int charsLength = chars.length();

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setDateHeader("Expires", 0);

int width = 70, 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.ITALIC, height));

g.setColor(getRandColor(160, 200));

for (int i = 0; i < 35; 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);

}

StringBuilder sRand = new StringBuilder();

String[] fontNames = { "Times New Roman", "Arial", "Book antiqua", "" };

for (int i = 0; i < 4; i++) {

g.setFont(new Font(fontNames[random.nextInt(3)], Font.ITALIC, height));

char rand = chars.charAt(random.nextInt(charsLength));

sRand.append(rand);

g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));

g.drawString(String.valueOf(rand), 16 * i + random.nextInt(6) + 3, height - random.nextInt(4));

}

g.setColor(getRandColor(160, 200));

for (int i = 0; i < 30; i++) {

int x = random.nextInt(width);

int y = random.nextInt(height);

int xl = random.nextInt(width);

int yl = random.nextInt(width);

g.drawLine(x, y, x + xl, y + yl);

}

request.getSession().setAttribute("Login_Image_Code", sRand.toString());

g.dispose();

try {

Thread.sleep(100);

} catch (Exception ex) { }

OutputStream os = response.getOutputStream();

ImageIO.write(image, "JPEG", os);

os.flush();

os.close();

} catch (Exception ex) { }

}

}
修改 web.xml:
<servlet>

<servlet-name>imageGenerator</servlet-name>

<servlet-class>test.ImageGenerator</servlet-class>

</servlet>



<servlet-mapping>

<servlet-name>imageGenerator</servlet-name>

<url-pattern>/image.jsp</url-pattern>

</servlet-mapping>

转自:http://www.javaeedev.com/blog/article.jspx?articleId=ff808081198fb524011999d714b0066f

分享到:
评论

相关推荐

    java生成图片验证码

    Java作为一门广泛使用的服务器端编程语言,提供了丰富的功能来生成图片验证码。本篇将深入讲解如何使用Java Servlet来实现这一过程。 首先,我们来看标题"java生成图片验证码"。这个标题暗示我们将探讨的是在Java...

    利用jsp生成图片验证码

    在本主题“利用jsp生成图片验证码”中,我们将探讨如何在JavaServer Pages (JSP)上下文中创建一个简单的图片验证码,而无需使用Servlet。首先,我们要明白JSP是Java Web开发中的视图层技术,它允许我们在HTML页面中...

    ASP.NET生成图片验证码

    ### ASP.NET生成图片验证码知识点详解 #### 一、概述 在Web应用开发中,验证码是一种常见的安全措施,用于区分操作者是人还是自动化程序。本文将详细介绍如何在ASP.NET环境中生成图片验证码,包括代码实现与关键...

    PHP快速生成图片验证码并且实现验证插件.rar

    PHP快速生成图片验证码并且实现验证插件 1.插件作用: 本插件可以快速实现网站验证码功能,包括验证码的生成和验证。   2.所需参数: CaptchaTool类包括两个方法,generate方法可以实现生成'...

    谷歌 kaptcha 自动生成图片验证码

    该资源是谷歌 kaptcha jar包,以及该jar包的使用说明,这是谷歌自动生成图片验证码,大大节省的开发时间,用起来比较简单,已过时,但仍然可以使用,喜欢的小伙伴就下载吧,有什么不懂的地方可以咨询博主。

    Servlet生成图片验证码

    在这个场景中,我们使用Servlet来生成图片验证码,这是一种防止恶意自动化程序(如机器人)进行非法操作的安全机制。验证码通常是一串随机生成的字符,以图像形式显示,用户需要在输入框中正确输入才能完成验证。 ...

    JSP生成图片验证码

    JSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txt

    Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考

    Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建...

    快速生成图片验证码的例子

    本示例将详细介绍如何使用.NET框架下的C#语言,结合imageProcessing.dll库,快速生成图片验证码。 首先,我们要了解imageProcessing.dll库。这是一个专门为C#开发者设计的图像处理库,提供了丰富的图像操作函数,如...

    登陆验证+servlet动态生成图片验证码

    动态生成图片验证码的目的是防止自动化程序(如爬虫或恶意脚本)自动填写表单,从而提高网站的安全性。 在Servlet中生成图片验证码,首先需要创建一个Servlet类,该类将负责生成随机字符串并将其转化为图像。以下是...

    java 生成图片验证码

    在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。

    asp生成图片验证码类

    使用示例,请自行修改代码以适应你的页面: 提交页from.asp '如果验证码为空或者验证码不...调用页main.asp,点击图片更换验证码 &lt;script language=javascript&gt;document.write("(); alt=看不清楚/&gt;"); 提交" /&gt;

    Java生成图片验证码

    在本主题中,我们将深入探讨如何使用Java来生成图片验证码。Java生成图片验证码的过程涉及图像处理、随机数生成以及字符串编码等多个知识点。 首先,验证码的核心是生成一个随机的字符串,通常包含字母和数字。在...

    asp页面无刷新生成图片验证码

    生成图片验证码涉及到以下几个关键知识点: 1. **服务器端代码**:通常使用ASP.NET的代码-behind(如C#或VB.NET)来编写生成验证码的逻辑。这包括生成随机字符串、绘制图片以及添加噪音线和点以增加识别难度。 2. ...

    使用Servlet生成图片验证码

    在"使用Servlet生成图片验证码"这个主题中,我们首先会创建一个Servlet来生成随机的字母和数字组合,通常包含4到6位。这可以通过Java的Random类和Character类来实现。验证码生成后,将其保存在服务器的内存中,以便...

    Java生成图片验证码工具类源码

    源码提供了一个生成图片验证码的工具类,适用于各种需要验证码的场景,如用户注册、登录等。该工具类使用随机字符生成验证码,并支持自定义验证码长度和字体样式。生成的验证码图片背景透明,线条清晰,可轻松辨认。...

    PHP生成图片验证码

    本教程将聚焦于PHP如何生成图片验证码,这对于Web开发人员来说是一项基本技能。 首先,我们需要理解验证码的基本原理。验证码通常包含随机生成的一串字符,这些字符可能是字母、数字或者两者的组合,有时还会包含...

    php生成图片验证码.pdf

    PHP生成图片验证码技术详解 PHP 生成图片验证码是 Web 开发中常用的安全机制,用来防止机器人程序的恶意攻击。下面我们将详细介绍 PHP 生成图片验证码的技术实现。 session_start() 函数 在 PHP 中,session_...

    python生成图片验证码

    在IT领域,生成图片验证码(CAPTCHA)是一种广泛使用的安全技术,用于防止自动化程序(如机器人)进行恶意操作。在本教程中,我们将探讨如何使用Python来生成中文图片验证码。这个过程涉及到图像处理、随机字符生成...

    jsp生成图片验证码

    总结来说,使用JSP生成图片验证码涉及到以下几个关键点:生成随机字符串、存储验证码、绘制并输出图片以及设置HTTP响应类型。这种方法简单易用,但要注意,对于高级的自动化攻击,可能需要更复杂的验证码解决方案,...

Global site tag (gtag.js) - Google Analytics