`

产生验证码图片的程序,servlet

阅读更多

package com.tnt.web.servlet;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.imageio.ImageIO;

import javax.servlet.*;

import java.io.*;

import javax.servlet.http.*;

@SuppressWarnings("serial")
public class RandomPicServlet extends HttpServlet {
	// 验证码图片的宽度。
	private int width = 60;
	// 验证码图片的高度。
	private int height = 20;

	protected void service(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {

		BufferedImage buffImg = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);
		Graphics2D g = buffImg.createGraphics();

		// 创建一个随机数生成器类。
		Random random = new Random();

		g.setColor(Color.WHITE);
		g.fillRect(0, 0, width, height);

		// 创建字体,字体的大小应该根据图片的高度来定。
		Font font = new Font("Times New Roman", Font.PLAIN, 18);
		// 设置字体。
		g.setFont(font);

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

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

		// randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
		StringBuffer randomCode = new StringBuffer();
		int red = 0, green = 0, blue = 0;

		// 随机产生4位数字的验证码。
		for (int i = 0; i < 4; i++) {
			// 得到随机产生的验证码数字。
			// String strRand=String.valueOf(random.nextInt(10));
			// 随机字母
			String strRand = String.valueOf((char) (random.nextInt(26) + 65));

			// 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
			red = random.nextInt(110);
			green = random.nextInt(50);
			blue = random.nextInt(50);

			// 用随机产生的颜色将验证码绘制到图像中。
			g.setColor(new Color(red, green, blue));
			g.drawString(strRand, 13 * i + 6, 16);

			// 将产生的四个随机数组合在一起。
			randomCode.append(strRand);
		}
		// 将四位数字的验证码保存到Session中。
		HttpSession session = req.getSession();
		session.setAttribute("randomCode", randomCode.toString());

		// 禁止图像缓存。
		res.setHeader("Pragma", "no-cache");
		res.setHeader("Cache-Control", "no-cache");
		res.setDateHeader("Expires", 0);
		res.setContentType("image/jpeg");

		// 将图像输出到Servlet输出流中。
		ServletOutputStream sos = res.getOutputStream();
		ImageIO.write(buffImg, "jpeg", sos);
		sos.close();
	}

}
 
分享到:
评论

相关推荐

    采用ajax实现的图片验证码

    3、编写一个servlet,在servlet中产生图形验证码 ------------------------------------------------------------ //1、给客户端作出的回应是以图片的方式来回应 response.setContentType("image/jpeg"); ...

    Jsp+Servlet+验证码[文].pdf

    Java Servlet 是一种基于 Java 语言的 Web 应用程序开发技术,而验证码则是 Web 应用程序中常用的安全机制。验证码是指在用户注册、登录、评论等操作时,系统生成的一串随机字符或者图片,以防止机器人恶意攻击和...

    非常漂亮的验证码

    在这个案例中,页面可能包含一个图像元素,该元素显示由服务器生成的验证码图片。此外,页面可能还包含一个文本输入框,让用户输入他们看到的验证码,以及一个提交按钮以验证输入。 2. `ValidateCode.aspx.cs`:这...

    java实现验证码产生功能

    验证码(CAPTCHA)是一种用于验证用户是否为人类的技术,它常用于防止自动化程序(如机器人)进行恶意操作,如注册、登录、评论等。在Java JSP(Java Server Pages)中实现验证码功能,主要涉及以下几个关键知识点:...

    随机生成验证码(JSP)

    // 生成验证码图片并发送响应 BufferedImage image = CaptchaGenerator.createImage(captcha); response.setContentType("image/png"); ImageIO.write(image, "png", response.getOutputStream()); } ``` 在这...

    自定义验证码,登录后进行验证

    定义图片的width、定义图片的height、定义图片上显示...随机产生40条干扰线,使图象中的认证码不易被其它程序探测到 随机产生的颜色将验证码绘制到图像中 四位数字的验证码保存到Session中 将图像输出到Servlet输出流中

    开发网上购物中用到的ajax,随机图片的产生等技术的总结

    根据给定的信息,本文将对电子商务项目中使用到的关键技术进行深入分析,主要涉及Ajax的应用以及验证码图片生成的技术实现。 ### 一、Ajax在电子商务中的应用 #### 1. Ajax概述 Ajax(Asynchronous JavaScript and...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...

    jquery实现无刷新验证码的简单实例

    验证码图片的属性包括宽度、高度和验证码字符个数,这些参数可以配置在web.xml中,也可以在Servlet初始化时通过参数直接设置。 ### 知识点二:验证码验证 验证码验证分为前端和后端两个部分。后端的`ResultServlet...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...

    nodejs语言实现验证码生成功能的示例代码

    在主函数执行完毕后,调用了request_content函数发起请求,并打印出服务器响应的数据,这里的响应数据假设是验证码图片的二进制流。在实际应用中,需要根据API的具体响应来处理这部分数据,比如将其保存为文件或直接...

    Kaptcha.zip

    在Web应用的`web.xml`中配置Servlet,以便在需要时动态生成验证码图片。 2. **配置**:Kaptcha允许开发者通过配置文件(如`kaptcha.properties`)调整验证码的样式。例如,可以设置验证码的长度、字体样式、颜色、...

    JAVA上百实例源码以及开源项目源代码

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

Global site tag (gtag.js) - Google Analytics