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;
import javax.servlet.http.HttpSession;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
/**
* Created by HE on 2016/9/18.
*/
@WebServlet(name = "AuthCode")
public class AuthCode extends HttpServlet {
private static final int WIDTH = 60;//设置验证码图片宽度
private static final int HEIGHT = 20;//设置验证码图片高度
private static final int LENGTH = 4;//设置验证码长度
//设置验证码随机出现的字符
private static final String str = "1234567890" +
"abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char[] chars = str.toCharArray();//将字符放在数组中方便随机读取
private static Random random = new Random();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置输出的类型为图片
response.setContentType("image/jpeg");
//设置不进行缓存
response.setHeader("pragma", "no-cache");
response.setHeader("cache-control", "no-cache");
response.setHeader("expires", "0");
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_3BYTE_BGR);
//画笔
Graphics graphics = image.getGraphics();
//设置背景颜色并绘制矩形背景
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, WIDTH, HEIGHT);
//用于记录生成的验证码
String code = null;
//生成验证码并绘制
for (int i = 0; i < LENGTH; i++) {
String c = "" + chars[random.nextInt(str.length())];
graphics.setColor(getColor());
graphics.drawString(c, 10 * i + 10, 18);
code += c;
}
//生成干扰点
for (int i = 0; i < 50; i++) {
graphics.setColor(getColor());
graphics.drawOval(random.nextInt(60), random.nextInt(20), 1, 1);
}
//将生成的验证码存入session中,以便进行校验
HttpSession session = request.getSession();
session.setAttribute("code", code);
//绘制图片
graphics.dispose();
//将图片输出到response中
ImageIO.write(image, "JPEG", response.getOutputStream());
}
//随机生成颜色
private Color getColor() {
return new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255));
}
}
JavaWeb项目生成验证码
5星 · 超过95%的资源 需积分: 27 8 浏览量
2016-09-18
20:22:37
上传
评论 1
收藏 29KB ZIP 举报
呜呜呜啦啦啦
- 粉丝: 222
- 资源: 26
最新资源
- 记录了贪心,动态规划等算法基本思想与设计.zip
- 基于菲阿里基本模型,以及MACD RSI BooL 等技术指标 构建一套基于贪心算法策略的智能投顾模型.zip
- oj算法代码-贪心算法.zip
- 基于yolov8行人检测源码+模型.zip
- 公开整理-地级市-绿色专利申请、授权数据集(2000-2022年).xlsx
- 基于Transformer模型的图像质量评分模型实现源码+详细说明文档.zip
- CST电磁场仿真+线性螺旋电感+建模步骤细节和RLC端口配置+CST高级建模操作
- 大数据库实验的报告材料材料(word文档良心出品).doc
- AIS2024 valid
- 最入门的爬虫代码 python.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈