验证码

防止机器人注册 可以限流
验证码产生于服务器 放在客户端不就想改就改啦 没有安全性
后台生成一个imgservlet 里面是空的图片,放一些随机数到图片,把图片发送到客户端,HTTP协议 发送的是img/jpeg

//告诉客户输出的格式
resp.setContentType(“image/jpeg”);
//java图片
//定义输出流
OutputStream out=resp.getOutputStream();
//定义图片高度 宽度
int width=80;
int height=30;
//定义空的图片,在内存中创建一个图片
验证码
![在这里插入图片描述]验证码
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//笔 awt包
Graphics g=image.getGraphics();
//形状 0,0 左上角确定矩形
g.fillRect(0, 0, width, height);
验证码
g.setFont(new Font(“Times New Roman”,Font.ITALIC,20));
String sRand="";
//获取随机数
Random random=new Random();
//4位随机数字
for(int i=0;i<4;i++){
验证码
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(rand, 20*i+6, 16);
}
//System.out.println(sRand);
//将验证码放入session
req.getSession().setAttribute(“sRand”, sRand);;
g.dispose();
//将图片输出
ImageIO.write(image, “jpeg”, out);

如何做验证呢?
在registerServlet 用request.getParameter 拿用户输入的值
将imgServlet中的随机数存到session中
两个数进行比较
验证码
在loginServlet中
验证码