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();
}
}
分享到:
相关推荐
3、编写一个servlet,在servlet中产生图形验证码 ------------------------------------------------------------ //1、给客户端作出的回应是以图片的方式来回应 response.setContentType("image/jpeg"); ...
Java Servlet 是一种基于 Java 语言的 Web 应用程序开发技术,而验证码则是 Web 应用程序中常用的安全机制。验证码是指在用户注册、登录、评论等操作时,系统生成的一串随机字符或者图片,以防止机器人恶意攻击和...
在这个案例中,页面可能包含一个图像元素,该元素显示由服务器生成的验证码图片。此外,页面可能还包含一个文本输入框,让用户输入他们看到的验证码,以及一个提交按钮以验证输入。 2. `ValidateCode.aspx.cs`:这...
验证码(CAPTCHA)是一种用于验证用户是否为人类的技术,它常用于防止自动化程序(如机器人)进行恶意操作,如注册、登录、评论等。在Java JSP(Java Server Pages)中实现验证码功能,主要涉及以下几个关键知识点:...
// 生成验证码图片并发送响应 BufferedImage image = CaptchaGenerator.createImage(captcha); response.setContentType("image/png"); ImageIO.write(image, "png", response.getOutputStream()); } ``` 在这...
定义图片的width、定义图片的height、定义图片上显示...随机产生40条干扰线,使图象中的认证码不易被其它程序探测到 随机产生的颜色将验证码绘制到图像中 四位数字的验证码保存到Session中 将图像输出到Servlet输出流中
根据给定的信息,本文将对电子商务项目中使用到的关键技术进行深入分析,主要涉及Ajax的应用以及验证码图片生成的技术实现。 ### 一、Ajax在电子商务中的应用 #### 1. Ajax概述 Ajax(Asynchronous JavaScript and...
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启动...
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启动...
验证码图片的属性包括宽度、高度和验证码字符个数,这些参数可以配置在web.xml中,也可以在Servlet初始化时通过参数直接设置。 ### 知识点二:验证码验证 验证码验证分为前端和后端两个部分。后端的`ResultServlet...
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启动...
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启动...
在主函数执行完毕后,调用了request_content函数发起请求,并打印出服务器响应的数据,这里的响应数据假设是验证码图片的二进制流。在实际应用中,需要根据API的具体响应来处理这部分数据,比如将其保存为文件或直接...
在Web应用的`web.xml`中配置Servlet,以便在需要时动态生成验证码图片。 2. **配置**:Kaptcha允许开发者通过配置文件(如`kaptcha.properties`)调整验证码的样式。例如,可以设置验证码的长度、字体样式、颜色、...
J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...