jsp 生成验证码代码
时间: 2023-07-21 08:43:55 浏览: 118
验证码的代码
以下是 JSP 生成验证码的示例代码:
```jsp
<%@ page contentType="image/jpeg" %>
<%@ page import="java.awt.*, java.util.*, java.awt.image.*, javax.imageio.*, java.io.*" %>
<%
// 定义验证码图片的大小
int width = 100;
int height = 50;
// 创建一个 BufferedImage 对象来绘制验证码图片
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取 Graphics2D 对象,用于绘制验证码图片
Graphics2D g = image.createGraphics();
// 设置背景颜色为白色
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
// 创建一个随机数生成器,用于生成验证码文本
Random random = new Random();
String captcha = "";
for (int i = 0; i < 4; i++) {
// 生成一个随机数字或字母作为验证码的一个字符
int r = random.nextInt(36);
if (r < 10) {
captcha += r;
} else {
captcha += (char)('a' + (r - 10));
}
}
// 将验证码文本保存到 Session 中,以便后续验证
session.setAttribute("captcha", captcha);
// 设置字体和字号
Font font = new Font("Arial", Font.BOLD, 24);
g.setFont(font);
// 绘制验证码文本
g.setColor(Color.BLACK);
g.drawString(captcha, 20, 35);
// 绘制干扰线
for (int i = 0; i < 10; i++) {
int x1 = random.nextInt(width);
int y1 = random.nextInt(height);
int x2 = random.nextInt(width);
int y2 = random.nextInt(height);
g.setColor(Color.GRAY);
g.drawLine(x1, y1, x2, y2);
}
// 将验证码图片输出给客户端
OutputStream out = response.getOutputStream();
ImageIO.write(image, "jpeg", out);
out.flush();
out.close();
%>
```
这段代码会生成一个大小为 100x50 像素的验证码图片,并将验证码文本保存到 Session 中。验证码文本由 4 个随机字母或数字组成,字体为 Arial、字号为 24,颜色为黑色。同时,还会绘制 10 条随机干扰线,使验证码更难被机器识别。最后,将生成的验证码图片输出给客户端。
阅读全文