Java验证码代码主要包括以下几个部分:
- 生成随机数:用于生成验证码中的每个数字或字母。
- 绘制验证码图片:使用Java的图形库(如Java AWT、Java Swing等)绘制验证码图片,包括背景、干扰线、噪点等元素。
- 保存验证码图片:将生成的验证码图片保存到文件或输出到浏览器。
- 验证用户输入:用户输入验证码后,与生成的验证码进行比较,判断是否正确。
以下是一个简单的Java验证码代码示例:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/captcha")
public class CaptchaServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("image/png");
// 创建缓冲图像对象
BufferedImage image = new BufferedImage(100, 30, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
// 设置背景颜色
g.setColor(Color.WHITE);
g.fillRect(0, 0, 100, 30);
// 设置字体和颜色
g.setFont(new Font("Arial", Font.BOLD, 20));
g.setColor(Color.BLACK);
// 生成随机数并绘制验证码
String captcha = generateCaptcha();
request.getSession().setAttribute("captcha", captcha);
for (int i = 0; i < captcha.length(); i++) {
g.drawString(String.valueOf(captcha.charAt(i)), 15 * i + 10, 20);
}
// 释放资源
g.dispose();
// 输出验证码图片
ImageIO.write(image, "png", response.getOutputStream());
}
private String generateCaptcha() {
StringBuilder captcha = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 5; i++) {
int num = random.nextInt(10);
captcha.append(num);
}
return captcha.toString();
}
}
这个示例中,我们创建了一个名为CaptchaServlet
的Servlet,用于生成验证码图片并将其输出到浏览器。在doGet
方法中,我们首先设置了响应的内容类型为image/png
,然后创建了一个缓冲图像对象,并设置了其背景颜色、字体和颜色。接着,我们调用generateCaptcha
方法生成一个包含5个随机数字的字符串作为验证码,并将其存储在会话中。最后,我们使用Java的图形库绘制了验证码,并将其输出到响应的输出流中。